При попытке вставить начальную строку таблицы, которая будет отслеживать ежедневные представления, я получаю сообщение об ошибке:
Неустранимая ошибка : вызов функции-члена bind_param () для не-объекта в /…/functions.php в строке 157
- Динамически связывать параметры mysqli_stmt, а затем связывать результат (PHP)
- Php MySql PDO BindParam время от времени работает
- PHP / MYSQL - Подготовленные утверждения MySQLi - Можно использовать bind_param для ORDER BY? (упорядочение набора результатов)
- PDO подготовил заявления для INSERT и ON DUPLICATE KEY UPDATE с именованными заполнителями
- Нужно ли мне избегать данных для защиты от SQL-инъекций при использовании bind_param () в MySQLi?
- (Неустранимая ошибка: вызов функции-члена bind_param () для не-объекта)
Эта строка является последней из следующих групп:
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("Ymd")); /* 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(); } }
Проблема была ошибка пользователя: я неправильно назвал столбец result
.
Это было обнаружено, когда я добавил echo $mysqli->error;
после строки $stmt = $mysqli->prepare($sqlquery);
в котором была обнаружена ошибка имени столбца.