我有一个像这样的查询:
INSERT IGNORE INTO my_table SET `data` = '{\"m\":50}'
假设 JSON 数据在我的实际查询中要大得多,我总是会收到错误消息:
Zend_Db_Statement_Exception: Invalid bind-variable name ':50'
这是我做的时候$connection->query( $sql );
过去,我通过在值周围使用单引号而不是双引号解决了这个问题,但由于某种原因,它现在不起作用。我错过了什么?
编辑
除了接受的答案之外,这是我用来确保我仍然可以传递new Zend_Db_Expr("NOW()")
给我的函数的代码,但要正确准备好 JSON 数据之类的东西。
foreach ( $params as $key => $value ) {
// Can't use ? for anything that requires an expression, such as NOW()
if ( $value instanceof Zend_Db_Expr ) {
$db_keys[] = $connection->quoteInto( "`{$key}` = ?", $value );
}
else {
$db_values[] = $value;
$db_keys[] = "`{$key}` = ?";
}
} // foreach params
$sql = "INSERT IGNORE INTO {$table} SET " . implode( ', ', $db_keys );
$result = $connection->query( $sql, $db_values );