Неустранимая ошибка: "Вызов функции-члена bind_param() для не-объекта"

78
10

Я получил фатальную ошибку, которую я не знаю, где, когда неправильно, может кто-нибудь помочь?

Моя страница категории,

<?php 
require_once 'dbfunction.php';
require_once 'DBCategory.php';

$con=getDbConnect();
$categoryArr=getcategoryArrCon($con, STATUS_ACTIVE);

foreach ($categoryArr as $categoryName=>$CategoryInfoArr) {

?>

и это мой скрипт функции для getCategoryArrCon

<?php

define("STATUS_ACTIVE", 0);
define("STATUS_DELETE", 1);

function getcategoryArrCon($con, $status) {
$result = array();
if (!$con->connect_error) {
$sqlstr = "SELECT c.category, c.title, c.image" .
"FROM category c WHERE status=?";
$stmt = $con->prepare($sqlstr);
$stmt->bind_param("i", $status);
$stmt->excute();
$stmt->bind_result($category, $title, $image);
while ($stmt->fetch()) {
$result[$category] = [
"category" => $category,
"title" => $title,
"image" => $image
];
}
$stmt ->close();
}
return $result;
}
?>

спросил(а) 2021-01-25T22:21:15+03:00 5 месяцев назад
1
Решение
63

Если вы заметили, когда вы произнесете свое подготовленное выражение, оно будет выглядеть так:

SELECT c.category, c.title, c.imageFROM category c WHERE status=?

Это простое пространство важно также в середине c.image и FROM чтобы сделать запрос действительным.

$sqlstr = "SELECT c.category, c.title, c.image" .
" FROM category c WHERE status=?";
// ^

Или почему бы просто не сделать это одним лайнером:

$sqlstr = "SELECT c.category, c.title, c.image FROM category c WHERE status = ?";

А также убедитесь, что $stmt->excute(); на самом деле не опечатка. Его ->execute()

Sidenote: Кроме того, используйте ->error чтобы проверить, хорошо ли приготовление. Пример:

$stmt = $con->prepare($sqlstr) or die($con->error);

ответил(а) 2021-01-25T22:21:15+03:00 5 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема