2016-04-29 13 views
0

Hallo Ich kann eine Verbindung zu meiner Datenbank, aber es heißt, dass ich 0 Zeilen habe! Ich habe verschiedene Möglichkeiten ausprobiert, um eine Verbindung zu meiner Datenbank herzustellen, aber alle geben immer 0 Zeilen zurück, so dass keine Daten aus der Datenbank angezeigt werden.Mysqli Ergebnis gibt immer 0

$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$sql = "SELECT * FROM keys"; 
$result = $conn->query($sql); 

if ($result->num_rows > 0) { 
    // output data of each row 
    while($row = $result->fetch_assoc()) { 
     echo "id: " . $row["id"]. " - Key: " . $row["key"]. " " . $row["used"]. "<br>"; 
    } 
} else { 
    echo "0 results"; 
} 
$conn->close(); 
?> 
+0

Sie mischen ** Object Oriented ** & ** ** Procedural Ansatz. –

+0

Ich sehe zwei Zeilen auf der verknüpften Seite, nicht null. –

+1

Ich habe Hilfe von Hanky ​​Panky bekommen, es funktioniert jetzt: D Ich entferne den Link von der Frage: D –

Antwort

4
SELECT * FROM keys 
      ^

KEYS ist ein reserved term, damit Ihre Abfrage nicht ausführen und keine Daten zurückgegeben werden, zumindest sie entkommen.

Die beste Option wäre, Ihren Feldnamen in etwas zu ändern, das nicht reserviert ist.

lustig Etwas

Sie sagen, zu beachten, wenn es einige Zeilen in meinem Ergebnis zeigen mir diejenigen sind, aber wenn es keine Zeilen in meinem Ergebnis sind dann zeigen Sie mir die Anzahl der Zeilen. Kurz gesagt, die Anzahl der Zeilen, wenn Ihre Abfrage fehlschlägt, ist völlig sinnlos! Das wird ein guter Ort, um eine Fehlermeldung von der Datenbanktreiber

+0

Die Verwendung von Backticks könnte helfen. –

+0

Ja, das ist was * Escape * tut :) –

+0

Zu dem witzigen Hinweis - ja, ich weiß, das ist sinnlos Ich habe es absichtlich getan, um herauszufinden, was das Problem sein könnte. –

3

keys ist reserved keyword in mysql es in Graviszeichen als

$sql = "SELECT * FROM `keys`"; 

Ihre Abfrage fehlschlägt und Ihr bekam 0 result always

zurück angezeigt werden müssen, um überprüfen Fehler in Abfrage Verwendung

if (!$conn->query("Your_QUERY")) { 
    printf("Errormessage: %s\n", $conn->error); 
} 

lesen http://php.net/manual/en/mysqli.error.php

1

Ich glaube, Sie diesen Code für get Ergebnis verwenden: -

$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 
$sql = "SELECT * FROM `keys`"; 
$result = mysqli_query($conn, $sql); 
if ($result->num_rows > 0) { 
// output data of each row 
while($row = $result->fetch_assoc()) { 
    echo "id: " . $row["id"]. " - Key: " . $row["key"]. " " . $row["used"]. "<br>"; 
} 
} else { 
echo "0 results"; 
echo "Rows:". mysqli_num_rows($result); 
} 
$conn->close(); 
+0

Diese Antwort erklärt nicht, wie der Code funktioniert, eine gute Antwort sollte informativer sein – ash