Я использую следующий код:Что случилось с моим синтаксисом PDO/MySQL?
$query = $dbh->prepare("INSERT into crm_order_errors "
."SET (order_id, number_of_attempts, last_attempt) "
."VALUES (:order_id, 0, :last_attempt) "
."ON DUPLICATE KEY UPDATE number_of_attempts = number_of_attempts + 1, last_attempt = :last_attempt"
);
$query->execute(array(':order_id'=>$orderId, ':last_attempt'=>1332849904);
Это производит следующее сообщение об ошибке:
PHP Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(order_id, number_of_attempts, last_attempt) VALUES ('10297', 0, '' at line 1 in /_myClasses/MYSQL_Logger.php on line 57
Это просто не ясно мне, где ошибка. Похоже, что значение для :last_attempt
не найдено, так как предупреждение помещает его значение в ''
: Values ('10297', 0, ''
. Почему это происходит и является ли источником проблемы?
Кроме того, мне разрешено использовать один и тот же заполнитель дважды в подготовленном заявлении (в данном случае, :last_attempt
).
Спасибо, это было ключевое слово SET. Пропущенная скобка была просто ошибкой копирования и вставки. – maxedison