Bind_param Необъектная ошибка w/ mysqli
При попытке вставить начальную строку для таблицы, которая будет отслеживать ежедневные просмотры, я получаю сообщение об ошибке:
Неустранимая ошибка: вызов функции-члена bind_param() для необъекта в /.../functions.php в строке 157
Эта строка является последней из следующей группы:
if($stats_found) {
$sqlquery = "UPDATE vid_stats SET views = ? WHERE title = ? AND format = ? AND date = ? AND results = ?";
$views++;
} else {
$sqlquery = "INSERT INTO vid_stats (views, title, format, results) values (?, ?, ?, ? )";
$views = 1;
}
$stmt = $mysqli->prepare($sqlquery);
/* bind parameters for markers */
$stmt->bind_param("dsss", $views, $title, $format, "success");
Есть намеки на проблему?
На случай, если это проблема с окружающим кодом, вот полная функция:
function updateViewCount($title, $format, $results) {
//update view count
global $mysqli;
$views = 0;
if ($stmt = $mysqli->prepare("SELECT views FROM vid_stats WHERE title = ? AND format = ? AND date = ?")) {
/* bind parameters for markers */
$stmt->bind_param("ssd", $title, $format, date("Y-m-d"));
/* execute query */
$stmt->execute();
/* bind result variables */
$stmt->bind_result($views);
/* fetch value */
if ($stmt->fetch()) {
$stats_found = true;
} else { $stats_found = false; }
/* close statement */
$stmt->close();
if($stats_found) {
$sqlquery = "UPDATE vid_stats SET views = ? WHERE title = ? AND format = ? AND date = ? AND results = ?";
$views++;
} else {
$sqlquery = "INSERT INTO vid_stats (views, title, format, results) values (?, ?, ?, ? )";
$views = 1;
}
$stmt = $mysqli->prepare($sqlquery);
/* bind parameters for markers */
echo $sqlquery."<br>".$views."<br>".$title."<br>".$format;
$stmt->bind_param("dsss", $views, $title, $format, "success");
/* execute query */
$stmt->execute();
/* close statement */
$stmt->close();
}
}
1 ответ
Решение
Проблема была в ошибке пользователя: у меня было имя result
неверный столбец
Это было обнаружено, когда я добавил echo $mysqli->error;
после линии $stmt = $mysqli->prepare($sqlquery);
который выявил ошибку имени столбца.