While-Schleife wird nicht ausgeführt - "Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given"
Hallo,
ich bekomme beim Versuch, über PHP Daten in einer Tabelle zu verändern, folgenden Fehler:
Der Übersicht halber habe ich nur den Ausschnitt eingefügt, bei dem der Fehler auftritt. Vorher wird mit dem Server verbunden und die Datenbank gewählt, in $connection ist die Verbindungskennung gespeichert.
In $table ist der Tabellenname einer Tabelle gespeichert, die zuvor erfolgreich erstellt und auch schon beschrieben wurde.
Zeile 58 ist im folgenden Quellcode die Zeile 13. Die While-Schleife, deren Bedingungen in derselben Zeile definiert wurden, wird gar nicht mehr (vermutlich wegen des Fehlers) ausgeführt (Die Ausführung erfolgt bis in Zeile 12 bzw. wieder nach der While-Schleife).
$response_array_length gibt im Beispiel den Wert 3 zurück.
Der Fehler kann eigentlich nicht durch ein Syntax-Problem in MYSQL verursacht worden sein, da der Befehl in PhpMyAdmin einwandfrei durchgeführt wird.
Ich hoffe, ihr könnt mir verraten, wo der Fehler im Skript liegt - nach mehreren Stunden Fehlersuche habe ich mittlerweile keinerlei Idee mehr und meine Zeit zur Fertigstellung wird ziemlich knapp
Grüße
ich bekomme beim Versuch, über PHP Daten in einer Tabelle zu verändern, folgenden Fehler:
Zitat
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\TestServer\XAMPP\xampp\htdocs\mysqlconnect.php on line 58
Der Übersicht halber habe ich nur den Ausschnitt eingefügt, bei dem der Fehler auftritt. Vorher wird mit dem Server verbunden und die Datenbank gewählt, in $connection ist die Verbindungskennung gespeichert.
In $table ist der Tabellenname einer Tabelle gespeichert, die zuvor erfolgreich erstellt und auch schon beschrieben wurde.
Zeile 58 ist im folgenden Quellcode die Zeile 13. Die While-Schleife, deren Bedingungen in derselben Zeile definiert wurden, wird gar nicht mehr (vermutlich wegen des Fehlers) ausgeführt (Die Ausführung erfolgt bis in Zeile 12 bzw. wieder nach der While-Schleife).
|
|
PHP-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$operation = "SELECT * FROM `".$table."`";
$query = mysql_query($operation, $connection);
if($query)
{echo "Status 3,3: Daten abgerufen.\n";
$response_array_length = mysql_num_rows($query);
$operation_add = array();
//Wenn schon Daten in der Tabelle vorhanden sind, müssen diese mit den eingehenden Daten verglichen werden, um Dopplungen zu vermeiden
if($response_array_length > 0)
{echo $operation;
echo "response_array_length: ".$response_array_length."\n";
$j = 0;
while($response_row = mysql_fetch_array($query, MYSQL_BOTH))
{echo "Dieses echo wird leider nicht ausgegeben :/";}
|
$response_array_length gibt im Beispiel den Wert 3 zurück.
Der Fehler kann eigentlich nicht durch ein Syntax-Problem in MYSQL verursacht worden sein, da der Befehl in PhpMyAdmin einwandfrei durchgeführt wird.
Ich hoffe, ihr könnt mir verraten, wo der Fehler im Skript liegt - nach mehreren Stunden Fehlersuche habe ich mittlerweile keinerlei Idee mehr und meine Zeit zur Fertigstellung wird ziemlich knapp
Grüße
also ich habe deinen codeschnipsel - ohne etwas ändern zu müssen - zum laufen gebracht
ich bin mal gespannt was beim var_dump() raus kommt
Gruß
Ego
allerdings kann ich mir den Fehler auch nicht erklären, bei mysql_num_rows($query); wird query noch ausgewertet und hat eine resource/ergebnismenge die 3 Zeilen enthält --- und ein paar Zeilen später soll plötzlich '1' oder 'true' oder so was drin stehen?Codeschnipsel
![]()
PHP-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42<?php error_reporting(E_ALL); $connection = mysql_connect('127.0.0.1:3306', 'root', '*******'); if (!$connection) { die('<br>keine Verbindung möglich: ' . mysql_error() .'<br>'); } echo 'Verbindung erfolgreich<br>'; if(!mysql_select_db("test", $connection)) { die('<br>mysql_error?: ' . mysql_error() .'<br>'); } $table="test"; //schnipsel anfang $operation = "SELECT * FROM `".$table."`"; $query = mysql_query($operation, $connection); if($query) {echo "Status 3,3: Daten abgerufen.\n"; $response_array_length = mysql_num_rows($query); $operation_add = array(); //Wenn schon Daten in der Tabelle vorhanden sind, müssen diese mit den eingehenden Daten verglichen werden, um Dopplungen zu vermeiden if($response_array_length > 0) {echo $operation; echo "response_array_length: ".$response_array_length."\n"; $j = 0; while($response_row = mysql_fetch_array($query, MYSQL_BOTH)) {echo "Dieses echo wird leider nicht ausgegeben :/";} } } //schnipsel ende else { die('<br>mysql_error: ' . mysql_error() .'<br>'); } mysql_close($connection); echo '<br>eof .......<br>'; ?>
ich bin mal gespannt was beim var_dump() raus kommt

Gruß
Ego
Hallo,
tatsächlich lag es am Inhalt von $query - ich habe aufgrund einer falsch gesetzten Klammer ausversehen schon innerhalb der while-Schleife ein neues $query erstellt (eigentlich hätte das erst eine Ebene darüber - also nach Beendigung der while-Schleife - folgen sollen), was zumindest schonmal erklärt, dass die Abfrage so nicht funktionieren kann.
Auch ist damit klar, warum bei dir das Skript einwandfrei lief - die Inhalte der while-Schleife habe ich ja nicht mitgeliefert, da ich den Klammernfehler nicht gesehen hatte.
Warum sie trotzdem nicht ein einziges Mal ausgeführt wurde, kann ich mir zwar nicht erklären, aber da nach dem Korrigieren der "}"-Klammer das Skript wieder einwandfrei läuft, muss ich das nicht unbedingt wissen.
Danke euch beiden für die flotte Hilfe
Grüße
tatsächlich lag es am Inhalt von $query - ich habe aufgrund einer falsch gesetzten Klammer ausversehen schon innerhalb der while-Schleife ein neues $query erstellt (eigentlich hätte das erst eine Ebene darüber - also nach Beendigung der while-Schleife - folgen sollen), was zumindest schonmal erklärt, dass die Abfrage so nicht funktionieren kann.
Auch ist damit klar, warum bei dir das Skript einwandfrei lief - die Inhalte der while-Schleife habe ich ja nicht mitgeliefert, da ich den Klammernfehler nicht gesehen hatte.
Warum sie trotzdem nicht ein einziges Mal ausgeführt wurde, kann ich mir zwar nicht erklären, aber da nach dem Korrigieren der "}"-Klammer das Skript wieder einwandfrei läuft, muss ich das nicht unbedingt wissen.
Danke euch beiden für die flotte Hilfe
Grüße
Ähnliche Themen
-
Datenbanken »-
[erledigt]mysql - fetch array expects resource, boolean given
(24. November 2010, 00:22)
-
PHP »-
PHP 5.3.1 macht ärger
(9. Februar 2010, 18:02)
-
PHP »-
PHP Code funktioniert nicht - falscher charset?
(23. Oktober 2009, 21:37)
-
FreeWebspace »-
[Frage] problem mit der DB
(12. Januar 2003, 14:57)


