База данных SELECT запрос не возвращает результат

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

Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\default.php on line 84 Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in C:\xampp\htdocs\default.php on line 86 

Я проверил соединение, и код правильно вводит данные, это просто запрос результатов, который не возвращает никаких значений. Лично я не вижу, где ошибка, потому что другие запросы, такие как INSERT и CREATE, работают отлично.

 <?php mysqli_select_db($conn, $dbName); $sql = "SELECT * FROM tbl_users WHERE id = 1;"; $result = mysqli_query($conn, $sql); echo mysqli_num_rows($result); //Line 84 if (mysqli_num_rows($result) > 0) { //Line 86 while($row = mysqli_fetch_assoc($result)) { ... } } else { echo "0 results"; } ?> 

Если вам нужна дополнительная информация, пожалуйста, спросите меня, и я попытаюсь ее предоставить.

Полный код:

 //**Create Connection**// $conn = mysqli_connect($serverName, $username, $password); //**Check Connection**// if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } else { echo "<p>Connected successfully!</p>"; } //**Create Database**// $dbName = "myDB"; $sql = "CREATE DATABASE IF NOT EXISTS " . $dbName . " CHARACTER SET utf8 COLLATE utf8_general_ci;"; //Error Handling if (!mysqli_query($conn, $sql)) { echo "Error creating database: " . mysqli_error($conn); } else { echo "<p>Database created successfully!</p>"; } //**Create Table**// mysqli_select_db($conn, $dbName); $tbl_name = "tbl_users"; $sql = "CREATE TABLE IF NOT EXISTS " . $tbl_name . " (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstName VARCHAR(64) NOT NULL, lastName VARCHAR(64) NOT NULL, userEmail VARCHAR(256) NOT NULL, reg_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP) CHARACTER SET utf8 COLLATE utf8_general_ci;"; //Error Handling if (!mysqli_query($conn, $sql)) { echo "Error creating table: " . mysqli_error($conn); } else { echo "<p>Table '" . $tbl_name . "' created successfully!</p>"; } mysqli_select_db($conn, $dbName); $sql = "SELECT * FROM tbl_users WHERE id = 1"; $result = mysqli_query($conn, $sql) or die(mysqli_error($conn)); if (!$result = mysqli_query($conn, $sql)) { printf("Errormessage: %s\n", mysqli_error($conn)); } if (mysqli_num_rows($result) > 0) { while($row = mysqli_fetch_assoc($result)) { echo $row . "<br>"; } } else { echo "0 results"; } 

Solutions Collecting From Web of "База данных SELECT запрос не возвращает результат"

Ваш код в порядке. Попробуйте выполнить этот SQL-запрос в базе данных …

вы не показываете нам весь ваш код.

У вас есть 2 одновременных вызова, и вы получаете сообщение об ошибке

Проблема здесь:

Вы используете mysqli_query() два раза в этом фрагменте кода:

 $result = mysqli_query($conn, $sql) or die(mysqli_error($conn)); if (!$result = mysqli_query($conn, $sql)) { printf("Errormessage: %s\n", mysqli_error($conn)); } 

Вам нужно удалить его и сделать:

 if (!$result) { printf("Errormessage: %s\n", mysqli_error($conn)); } 

при добавлении маршрута эвакуации else{...} и affected_rows() .

  • По этой причине ваш запрос не работает.

Редактировать:

Это вы используете $conn дважды и не используете ссылку на переменную для вашего запроса:

 mysqli_select_db($conn, $dbName); $sql = "SELECT * FROM tbl_users WHERE id = 1"; $result = mysqli_query($conn, $sql) or die(mysqli_error($conn)); 

Измените его и используйте 4- mysqli_connect() схему mysqli_connect() , так как БД уже была создана в этот момент: (предположим, что идентификатор «1» уже создан над этим).

 $dbName = "myDB"; $conn = mysqli_connect($serverName, $username, $password, $dbName); $sql = "SELECT * FROM tbl_users WHERE id = 1"; $result = mysqli_query($conn, $sql) or die(mysqli_error($conn)); if (!$result) { printf("Errormessage: %s\n", mysqli_error($conn)); } else{ echo "Success"; } 

или путем удаления or die(mysqli_error($conn)) и получения ошибки, переданной после, если она есть.

 $dbName = "myDB"; $conn = mysqli_connect($serverName, $username, $password, $dbName); $sql = "SELECT * FROM tbl_users WHERE id = 1"; $result = mysqli_query($conn, $sql); if (!$result) { printf("Errormessage: %s\n", mysqli_error($conn)); } else{ echo "Success"; } 

(дополнительное редактирование)

Вы также можете попробовать этот метод и использовать в сочетании с тем, что я уже сказал выше:

 $numrows = mysqli_num_rows($result); if($numrows > 0){ // do something } 

Добавьте отчет об ошибках в начало файла (ов), который поможет найти ошибки.

 <?php error_reporting(E_ALL); ini_set('display_errors', 1); // rest of your code 

Sidenote: Сообщение об ошибках должно выполняться только в стадии постановки и никогда не выпускаться.

используйте mysqli_error(); чтобы увидеть, где проблема

  mysqli_free_result($result); if (!$result = mysqli_query($conn, $sql)) { printf("Errormessage: %s\n", mysqli_error($conn)); } 

если ваш ответ «Errormessage: команды не синхронизированы, вы не можете запустить эту команду сейчас», тогда я думаю, ваша проблема в том, что вы все еще подключены в другом запросе, добавьте mysqli_free_result($result); перед кодом выше, чтобы увидеть реальную ошибку.

Я не думаю, что что-то не так с вашим кодом, но есть некоторые проблемы с вашим стилем программирования. Вы должны попробовать это

  $conn = mysqli_connect('host', 'username', 'password', 'database', '[option port number]') or die('<h1>Error connecting to database server</h1>'); //=> the optional port number defaults to 3306 - recommended if your database is hosted on a live server else leave blank if ($conn) { $query = "SELECT * FROM `tbl_users` WHERE `id` = 1"; //if id is unique this should just be a single row from your database $result = $mysqli_query($dbc, $query) or die("Invalid query sytax" . mysqli_error($conn)); if($result){ echo "The number of rows are(is) " . mysqli_num_rows($result); while($row = mysqli_fetch_assoc($result)) { //do stuff here or remove while loop and var_dump() } } else { echo "No record found"; } }