2016-04-29 2 views
0

Привет, я могу подключиться к моей базе данных, но он говорит, что у меня есть 0 строк! Я пробовал разные способы подключения к моей базе данных, но все они всегда возвращают 0 строк, поэтому он не будет отображать данные из базы данных.Результат Mysqli всегда возвращает 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

Вы смешиваете ** объектно-ориентированного ** & ** ** Процедурный подход. –

+0

Я вижу две строки на странице, которую вы связали, а не ноль. –

+1

Я получил помощь от Hanky ​​Panky, теперь он работает: D Я удаляю ссылку с вопроса: D –

ответ

4
SELECT * FROM keys 
      ^

KEYS является reserved term, следовательно, ваш запрос не может выполнить и никакие данные не возвращаются, по крайней мере, избежать его.

Лучшим вариантом было бы изменить название поля на то, что не зарезервировано.

Смешных отметить

Вы хотите сказать, что если есть несколько строк в моем результате показали мне те, но если нет ни одной строки в моем результате, то покажите мне количество строк. Короче говоря, отображение количества строк при провале вашего запроса совершенно бессмысленно! Это будет хорошее место, чтобы отобразить сообщение об ошибке, возвращенное драйвером базы данных

+0

Использование backticks может помочь. –

+0

Да, вот что * бежать его * делает :) –

+0

К забавному сведению - да, я знаю, что это бессмысленно, я сделал это с целью выяснить, в чем проблема. –

3

keys является reserved keyword в MySQL он должен быть в кавычкой, как

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

Ваш запрос терпит неудачу и ваш получил 0 result always

Для проверить ошибки в использовании запроса

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

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

1

Я думаю, вы должны использовать этот код для результата ПОЛУЧАЕТЕ: -

$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

Этот ответ не объясняет, как работает код, хороший ответ должен быть более информативным – ash

Смежные вопросы