Я продолжаю получать сообщение об ошибке с помощью mysql_num_rows()
, можете ли вы помочь мне выяснить, что пошло не так в моем коде?
Вот мой код:
<?php //check if the user press submit if (isset($_POST['submit'] )) { $customer = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["username"]); // filter everything but numbers and letters $password = preg_replace('#[^A-Za-z0-9]#i', '', $_POST["password"]); // filter everything but numbers and letters $sql = mysql_query("SELECT id FROM members WHERE username='$customer' AND password='$password' LIMIT 1"); // query the person // ------- MAKE SURE PERSON EXISTS IN DATABASE --------- $existCount = mysql_num_rows($sql); // count the row nums if ($existCount == 1) { // evaluate the count while($row = mysql_fetch_array($sql)){ $id = $row["id"]; } $_SESSION["id"] = $id; $_SESSION["customer"] = $customer; $_SESSION["password"] = $password; header("location: index.php"); exit(); } else { echo 'That information is incorrect, try again <a href="customer_login.php">Click Here</a>'; exit(); } } ?>
Я пробовал mysql_errno()
как вам посоветовал .. и это эхо 1146
и когда я ищу эту ошибку, он говорит, что
1146: Table 'kossu.nonexistenttable' doesn't exist
Но я не знаю, что это значит … Пожалуйста, помогите.
Вероятно, mysql_query()
не удалось. В этом случае он возвращает false
. Используйте mysql_error (), чтобы узнать, что происходит.
При возникновении ошибки mysql_query()
возвращает объект false
вместо объекта ресурса. Проверьте возвращаемое значение mysql_query()
перед тем, как передать его в mysql_num_rows()
.
Из документов :
Возвращаемые значения
Для SELECT, SHOW, DESCRIBE, EXPLAIN и других операторов, возвращающих набор результатов, mysql_query () возвращает ресурс с успехом или FALSE при ошибке.
Итак, у вас есть ошибка. Используйте mysql_error()
чтобы узнать, что.
mysql_query()
. Он возвращает false
Чтобы увидеть, что ошибка использует mysql_error()
Возможно, вы не выбрали нужную базу данных. Раньше я сталкивался с такой проблемой, и ошибка была выбрана мной.
Когда выполняется запрос MySQL, ожидается возврат результата запроса. Он возвращает False
если запрос не был успешно выполнен. Кажется, что ваш запрос не удался, поэтому он вернул False
. Когда вы пытаетесь подсчитать строки с mysql_num_rows()
в неудавшемся запросе, он обязательно вернет ошибку. В вашем запросе может быть ошибка. Пожалуйста, проверьте.
Причиной может быть то, что SQL-запрос использует неверную базу данных. Используйте полное имя таблицы, то есть databaseName.tableName
.
В твоем случае:
$sql = mysql_query("SELECT id FROM DBName.members WHERE username='$customer' AND password='$password' LIMIT 1");
где «DBName» – это ваше имя базы данных.