Я пытаюсь выполнить следующий код как подготовленный оператор с использованием PHP:
private function prepQuery(){
$this->prepSQL = $this->con->prepare('
IF EXIST(SELECT * FROM tablename WHERE reference=?)
UPDATE tablename
SET
column1=?,
column2=?,
column3=?
WHERE reference=?
ELSE
INSERT INTO tablename(
column1,
column2,
column3,
column4
) VALUES(?, ?, ?, ?);
');}
Код выполняется в контексте объекта, где объект соединения является переменной частного поля в классе. Функция должна инициализировать переменную поля $ prepSQL как объект, но я получаю следующую ошибку:
Неустранимая ошибка: необученная ошибка: вызов функции-члена bind_param () для логического значения
Целью кода является чтение файла, который регулярно обновляется (размер файла и данные поля вне моего контроля, поэтому использование подготовленных операторов было бы лучшим выбором для скорости и безопасности). Код должен проверить, существует ли запись в базе данных и, если да, обновить ее, чтобы она содержала сделанные изменения В противном случае вставьте новую строку из файла в базу данных.
Однако он не завершается, так как говорит, что переменная $ prepSQL является логическим значением и не может вызвать для него метод bind_param.
Я попытался выполнить sql вручную, и это прекрасно работает. Если я использую нормальный оператор вставки в коде, он работает нормально. Но при запуске, как показано ниже, это не работает. Я действительно не уверен, что я делаю не так здесь.