Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Błąd mysql_fetch_array() jak by nadpisywanie zapytania
Forum PHP.pl > Forum > Przedszkole
mainfreme
Witam, mam taki problem, że skrypt wywala mi po 1 przejściu For-a błąd walidacji mysql i poprostu nie wiem czemu tak sie dzieje i jak to naprawić.
Siedze nad tym 2 dzień i juz nie moge.
  1. $pytanieSelectKategoria1 = $mysql->query("SELECT `id`, `link1rzad` FROM `kategorie1rzedy` ORDER BY `id` ASC");
  2. while($row = $mysql->fetchArray($pytanieSelectKategoria1)){
  3.  
  4.  
  5. $url = 'www.link'.$row["link1rzad"];
  6. $ch = curl_init($url);
  7. curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
  8. $wejscie = curl_exec($ch);
  9. curl_close($ch);
  10.  
  11.  
  12. if(preg_match_all( '#<a href="(.*?)" class="leftmenu">(.*?)</a>#', $wejscie, $wyjscie))
  13. {
  14. $kategoriePod=$wyjscie[1];
  15. $nazwyPod=$wyjscie[2];
  16. }
  17. if(preg_match_all( '#<a href="(.*?)" class=leftmenured>(.*?)</a>#', $wejscie, $wyjscie))
  18. {
  19. $kategoriePodRed=$wyjscie[1];
  20. $nazwyPodRed=$wyjscie[2];
  21. }
  22. $data = date('Y-m-d G:H:s');
  23. foreach($kategoriePod as $element => $key){
  24. $kategoriePodExplode = explode('/', $kategoriePod[$element]);
  25. $nazwyPodAdd = addslashes($nazwyPod[$element]);
  26.  
  27. $menuRubik = $row["id"];
  28.  
  29. $eselect2rzad = $mysql->query("SELECT `nazwaGlowna` ,`linkglowna` FROM `kategorie2rzedy` WHERE `nazwaGlowna` = '".$nazwyPodAdd."' AND `linkglowna` = '".$kategoriePodExplode[4]."&wgr=&new_step=120&lang=en'");
  30. $numrows = $mysql->numRows($eselect2rzad);
  31.  
  32. if ($numrows>0) {
  33. $rekord = "Rekord kategorii 2 rzędu o nazwie ".$nazwyPodAdd." już Istnieje.";
  34. }else{
  35.  
  36. $rekord = "Nie ma takiego rekordu. Rekord nazwie ".$nazwyPodAdd." z kategorii 2 rzędu Został dopisany.";
  37. $pytanie2rzedu = "INSERT INTO `kategorie2rzedy` (`id` ,`nazwaGlowna` ,`linkglowna` ,`id_kategoria1rzedu` ,`data`) VALUES (NULL , '".$nazwyPodAdd."', '".$kategoriePodExplode[4]."&wgr=&new_step=120&lang=en', '".$row['id']."', '".$data."');";
  38.  
  39. $mysql->query($pytanie2rzedu);
  40. }
  41. echo $rekord."<br />";
  42.  
  43. $insertRaport = "INSERT INTO `raport` (`id` ,`text` ,`data`) VALUES (NULL , '".$rekord."', '".$data."');";
  44. $mysql->query($insertRaport);
  45. }
  46.  
  47. foreach($kategoriePodRed as $element => $key){
  48. $kategoriePodExplodeRed = explode('/', $kategoriePodRed[$element]);
  49. $nazwyPodAddRed = addslashes($nazwyPodRed[$element]);
  50. #$menuRubik = "menu_rubrik=".$i;
  51.  
  52. $pytanieSelect = $mysql->query("SELECT `nazwaGlowna` ,`linkglowna` FROM `makx13_audioline`.`kategorie2rzedy` WHERE `nazwaGlowna` = '".$nazwyPodAddRed."' AND `linkglowna` = '".$kategoriePodExplodeRed[4]."&wgr=&new_step=120&lang=en'");
  53. $numrows = $mysql->numRows($pytanieSelect);
  54.  
  55. if ($numrows>0) {
  56. $rekord = "Rekord kategorii 2 rzędu o nazwie ".$nazwyPodAddRed." już Istnieje.";
  57. }else{
  58. $rekord = "Nie ma takiego rekordu. Rekord nazwie ".$nazwyPodAddRed." z kategorii 2 rzędu Został dopisany.";
  59. $pytanie2rzeduRed = "INSERT INTO `makx13_audioline`.`kategorie2rzedy` (`id` ,`nazwaGlowna` ,`linkglowna` ,`id_kategoria1rzedu` ,`data`) VALUES (NULL , '".$nazwyPodAddRed."', '".$kategoriePodExplodeRed[4]."&wgr=&new_step=120&lang=en', '".$row['id']."', '".$data."');";
  60. $mysql->query($pytanie2rzeduRed);
  61. }
  62.  
  63. $insertRaport = "INSERT INTO `makx13_audioline`.`raport` (`id` ,`text` ,`data`) VALUES (NULL , '".$rekord."', '".$data."');";
  64. $mysql->query($insertRaport);
  65.  
  66. }
  67.  
  68. }

kod clasy mysql:
  1. <?php
  2. class mysql
  3. {
  4. private $query;
  5. private $link;
  6.  
  7. private $q;
  8.  
  9. function __construct($host, $login, $password, $db)
  10. {
  11. $connect = mysql_connect($host, $login, $password) or die ("Nie mogę nawiązać połączenia z bazą danych!");
  12. $select = mysql_select_db($db);
  13. if($connect && $select)
  14. {
  15. $this->link = $connect;
  16. return true;
  17. }
  18. else
  19. {
  20. return false;
  21.  
  22. }
  23. }
  24.  
  25. function __call($name, $attr)
  26. {
  27. echo 'BLAD:   <strong>Metoda '.$name.' jest niepoprawna</strong><br />';
  28.  
  29. }
  30.  
  31. public function debug()
  32. {
  33. print_r($this->link);
  34. }
  35.  
  36. public function query($query)
  37. {
  38. if(!empty($query))
  39. {
  40. $this->q = $query;
  41. $query = mysql_query($query, $this->link);
  42. $this->query = $query;
  43. }
  44. }
  45.  
  46. public function fetchRow()
  47. {
  48. $row = mysql_fetch_row($this->query);
  49.  
  50. return $row;
  51. }
  52.  
  53. public function fetchArray()
  54. {
  55.  
  56. $array = mysql_fetch_array($this->query);
  57. return $array;
  58. }
  59.  
  60. public function numRows()
  61. {
  62.  
  63. $num = mysql_num_rows($this->query);
  64.  
  65. return $num;
  66.  
  67. }
  68. public function charset($charset)
  69. {
  70. $charset = mysql_set_charset($charset, $this->link);
  71.  
  72. return $charset;
  73. }
  74.  
  75. public function getID()
  76. {
  77. (int)$id = mysql_insert_id($this->query, $this->link);
  78.  
  79. return $id;
  80. }
  81.  
  82. public function error()
  83. {
  84. $err = mysql_error();
  85. if(!empty($err))
  86. {
  87. echo 'BLAD:   <strong>'.$err.'</strong><br />';
  88. echo 'Zapytanie:   <strong>'.$this->q.'</strong>';
  89. }
  90. }
  91.  
  92. function __destruct()
  93. {
  94. mysql_close($this->link);
  95.  
  96. unset($this->link);
  97. unset($this->query);
  98.  
  99. }
  100.  
  101. }
  102. ?>

Wynik działania:
  1. Rekord kategorii 2 rzędu o nazwie Accessoires już Istnieje.
  2. Rekord kategorii 2 rzędu o nazwie Brillen już Istnieje.
  3. Rekord kategorii 2 rzędu o nazwie Caps/Tücher/Halswärmer juĹź Istnieje.
  4. Rekord kategorii 2 rzędu o nazwie Freizeitbekleidung już Istnieje.
  5. Rekord kategorii 2 rzędu o nazwie Handschuhe już Istnieje.
  6. Rekord kategorii 2 rzędu o nazwie Kinderbekleidung już Istnieje.
  7. Rekord kategorii 2 rzędu o nazwie Kommunikation już Istnieje.
  8. Rekord kategorii 2 rzędu o nazwie Lederbekleidung już Istnieje.
  9. Rekord kategorii 2 rzędu o nazwie Nierengurte już Istnieje.
  10. Rekord kategorii 2 rzędu o nazwie Protektoren już Istnieje.
  11. Rekord kategorii 2 rzędu o nazwie Regenbekleidung już Istnieje.
  12. Rekord kategorii 2 rzędu o nazwie Stiefel/Schuhe/Socken już Istnieje.
  13. Rekord kategorii 2 rzędu o nazwie Sturmhauben/U-Wäsche juĹź Istnieje.
  14. Rekord kategorii 2 rzędu o nazwie T-Shirts już Istnieje.
  15. Rekord kategorii 2 rzędu o nazwie Textilbekleidung już Istnieje.
  16.  
  17. Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/makx13/domains/newweb.com.pl/public_html/prace/audioline/stare/db/db.php on line 56
freemp3
To:
Kod
while($row = $mysql->fetchArray($pytanieSelectKategoria1))


Zmień na:
Kod
while($row = $mysql->fetchRow($pytanieSelectKategoria1))


Używając funkcji mysql_fetch_array() pobierasz od razu całą tablice wyników, a nie jeden wiersz. Jeśli chcesz wyciągać po wierszu należy użyć funkcji mysql_fetch_row();
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.