Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

Robbi

Routinier

Dabei seit: 16.06.2008

Beiträge: 284

 

1 Zum Seitenanfang

Mittwoch, 13. Juli 2011, 18:16

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:

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($queryMYSQL_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 :S

Grüße
 

lorenz

Haudegen

Dabei seit: 05.11.2002

Beiträge: 647

 

2 Zum Seitenanfang

Mittwoch, 13. Juli 2011, 20:32

ja der fehler sagt doch normal schon alles schon mal geguckt was in $query drin ist ?

PHP-Quelltext

1
2
3
$query mysql_query($operation$connection);
if ($query === false)die (mysql_error ($connection));
var_dump($query);


-LA
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

3 Zum Seitenanfang

Mittwoch, 13. Juli 2011, 21:45

also ich habe deinen codeschnipsel - ohne etwas ändern zu müssen - zum laufen gebracht

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($queryMYSQL_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>';
?>
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?
ich bin mal gespannt was beim var_dump() raus kommt :)

Gruß
Ego
 

Robbi

Routinier

Dabei seit: 16.06.2008

Beiträge: 284

 

4 Zum Seitenanfang

Mittwoch, 13. Juli 2011, 23:04

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
 

Ähnliche Themen