MySQLi запрос дает ошибку, когда нет никакого результата - PullRequest
0 голосов
/ 21 ноября 2018

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

<?php
error_reporting(E_ALL);
include_once("includes/connection.php");
$input = "OUT";
$answer = $mysqli->query("SELECT answer FROM faq WHERE question LIKE '%".$input."%' LIMIT 1")->fetch_object()->answer; 
echo $answer;
?>

Работает нормально, когда есть какой-то результат, но выдает ошибку, как показано ниже, когда нет результата

Notice: Trying to get property 'answer' of non-object in C:\xampp\htdocs\new\test.php on line 5

Я хочу обработать эту ошибку, используя if else.Я не знаю много PHP и специально не знаю больше о запросах.Дайте мне знать, если кто-то может помочь мне выйти из этого.Спасибо

Ответы [ 3 ]

0 голосов
/ 21 ноября 2018

Это вызвано чрезмерным использованием цепочек методов. Почему вам нужно помещать каждый вызов в одну длинную строку?

Вы должны проверить, извлекается ли объект первым ...

$query = $mysqli->query("SELECT answer FROM faq WHERE question LIKE '%".$input."%' LIMIT 1");
if ( $query && ($row = $query->fetch_object()) ) {
    $answer = $row->answer; 
    echo $answer;
}

Вам также следует изучить подготовленные операторы, так как это может привести к внедрению SQL и другим проблемам.- Как создать защищенный MySQL подготовленный оператор в php?

0 голосов
/ 21 ноября 2018

Вы также можете использовать try{} catch {}

try {
    $answer = $mysqli->query("SELECT answer FROM faq WHERE question LIKE '%".$input."%' LIMIT 1")->fetch_object()->answer; 
}
catch (Exception $e) {
    $errormsg = $e->getMessage();
} 
0 голосов
/ 21 ноября 2018

Попробуйте:

if ($answer) {
    echo $answer;
} else {
    die('No Answer Found');
}

Надеюсь, это сработает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...