2016-06-03 5 views
0

Ich habe ein Problem mit mysql. Ich habe PHP-Skript, das Array in JSON-Daten aus der Datenbank zurückgegeben. Ich habe eine Nachricht von 'Echo' über die erfolgreiche Verbindung, aber mein Ergebnis ist gleich welcher Null des Arrays.mysql_query Verbindung NULL Ergebnis, aber ich habe eine Verbindung erfolgreich

Im Ergebnis auf Explorer Ich habe:

Connected successfully 

query: SELECT name,id FROM rz_DWzZ' 

result: 

RESULT:[] 

Dieses dieses Skript.

$conn = mysql_connect($servername, $username, $password); 
     mysql_select_db($database); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
echo "Connected successfully"; 
$return_arr = array(); 
$qstring = "SELECT name,id FROM rz_DWzZ"; 
$result = mysql_query($qstring,$conn); 
echo "<br>query: ".$qstring."<br>"; 
echo "<br>result: ".$result."<br>"; 
while ($row = mysql_fetch_assoc($result))//loop through the retrieved values 
{ 
     $row['name']=htmlentities(stripslashes($row['name'])); 
     $row['id']=(int)$row['id']; 
     array_push($return_arr,$row); 
} 
mysql_close($conn); 
echo "<br>RESULT:".json_encode($return_arr); 
+0

So gibt es keine Zeilen in 'rz_DWzZ'. –

+0

Nein. In Tabelle rz_DWzZ sind Zeilen. Wenn ich eine Abfrage aus dem Explorer in meinem phpMyAdmin kopiere, habe ich das Ergebnis. – Remi

+0

Wenn du 'var_dump ($ result)' was bekommst du? –

Antwort

1

Sie haben nicht ordnungsgemäß auf Fehler überprüft. mysql _ *() - Funktionen geben bei einem Fehler boolesche FALSE zurück, wobei echo als eine Zeichenfolge mit der Länge null/unsichtbar ausgegeben wird.

Sie haben ausdrücklich auf sie prüfen:

$result = mysql_query(...) or die(mysql_error()); 
          ^^^^^^^^^^^^^^^^^^^^^^--method #1 

if ($result === false) { // method #2 
    die(mysql_error()); 
} 

Und natürlich sollten Sie sowieso nicht, diese Funktionen verwenden werden. Sie sind veraltet/veraltet, und Ihr Code ist in neueren PHP-Versionen nutzlos. Sie sollten mysqli oder PDO für jede neue Entwicklung verwenden.

Wie gut, haben Sie zahlreiche andere Fehler:

if ($conn->connect_error) { 

die mysql _ *() Funktionsbibliothek wurde nie objektorientiert. Es ist rein prozedural und hat überhaupt KEINE Objektunterstützung. Daher wird dieser Verbindungstest immer fehlschlagen, da $conn->connect_error immer auf null ausgewertet wird, was auch in boolean false konvertiert wird, was bedeutet, dass Sie einen falsch positiven Erfolg erhalten.

Verwandte Themen