Почему поиск бросает вызов неопределенному методу ошибки stmt :: fetch_row ()? - PullRequest
0 голосов
/ 29 января 2019

Когда я пытаюсь выполнить запрос к базе данных с помощью оператора SELECT, он работает нормально, но когда я пытаюсь отфильтровать строки, возвращенные путем добавления предложения LIKE к исходному запросу, он выдает фатальную ошибку: вызов неопределенного метода mysqli_stmt :: fetch_row ()

if (isset($_POST["search"]))
{
    $searchString = "%{$_POST['search']}%";
    $queryStringAppend = " WHERE name LIKE ? OR state LIKE ?";
            $stmt = $mysqli->prepare("SELECT COUNT(*) FROM $tableName " . $queryStringAppend);
    //|| die("Ooops! Error occured: <br/>" . $mysqli->error);
    $stmt->bind_param("ss", $searchString, $searchString);

    $stmt->execute();
    $stmt->store_result();
    if ($mysqli->error)     // CHECK IF ERROR HANDLER IS WORKING
        die("Query failed: <br />" . $mysqli->error);
}
 else
{
    $stmt = $mysqli->query("SELECT COUNT(*) FROM $tableName ");
    if ($mysqli->error)
        die("Query failed: <br />" . $mysqli->error);
}

$totalRowCount = $stmt->fetch_row()[0];  // This is the line where the error is thrown

Когда $ _POST ["search"] не установлен, запрос работает нормально, и все результаты отображаются.Но, если я пытаюсь фильтровать, выдается ошибка: - (

1 Ответ

0 голосов
/ 29 января 2019

Это потому, что fetch_row - это метод mysqli_result, а не mysqli_stmt. Вам нужно сначала сохранить свой результат

    $results = $stmt->get_result()
    $results->fetch_row()[0];

Во втором if, mysqli->query("") напрямую вернуть mysqli_result объект, поэтому он выполняется без ошибок;

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