#php #mysql
#php #mysql
Вопрос:
это должно быть просто, но, похоже, у меня это не работает. я тестировал его с хорошими и плохими паролями. несмотря ни на что, это не войдет в оператор else. я не уверен, чего мне не хватает
мой код:
$mysqli = mysqli_connect("localhost", "joeuser", "somepass", "testDB");
if (mysqli_connect_errno()) {
printf("Connect failed: %sn", mysqli_connect_error());
exit();
} else {
$sql = "SELECT * FROM login_info";
$res = mysqli_query($mysqli, $sql);
if ($res) {
while ($newArray = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
$id = $newArray['first_name'];
$testField = $newArray['last_name'];
echo "The ID is ".$id." and the text is ".$testField."<br/>";
}
} else {
printf("Could not retrieve records: %sn", mysqli_error($mysqli));
}
mysqli_free_result($res);
mysqli_close($mysqli);
}
Если я отправлю ему пользователя и пароль, которые существуют, он выполнит оператор if нормально, но если я отправлю ему тест для того, которого нет в БД, он все равно не выполнит остальное? почему?
Комментарии:
1. Какой оператор if? первый?
Ответ №1:
Для успешного выбора, ПОКАЗАТЬ, ОПИСАТЬ или ОБЪЯСНИТЬ запросы
mysqli_query()
вернутMySQLi_Result
объект.
Запрос не выполняется, только если произошла какая-то серьезная ошибка. Тот факт, что SELECT
запрос не соответствует ни одной строке, не делает запрос неудачным. Вы все равно получите MySQLi_Result
объект обратно. Вы захотите проверить mysqli_num_rows
, содержит ли результирующий набор какие-либо строки.
Кстати, избавьте себя от вложенности:
if (!$something) {
exit;
}
// continue as usual
Здесь нет необходимости else
, поскольку вы все exit
равно редактируете. Упрощает работу.
Комментарии:
1. Хотя я предпочитаю return, а не exit (надеюсь, окончательный код будет использовать функции)
Ответ №2:
Вот так:
if ($res) {
while ($newArray = mysqli_fetch_array($res, MYSQLI_ASSOC)) {
$id = $newArray['first_name'];
$testField = $newArray['last_name'];
echo "The ID is ".$id." and the text is ".$testField."<br/>";
}
}
if (!isset($id)) {
printf("Could not retrieve records: %sn", mysqli_error($mysqli));
}
Комментарии:
1. Потрясающе! это сработало, хотя я пробовал «if (empty ($ id))», и это не сработало, но «if (!isset ($ id))» работает, так что большое вам спасибо!