对于涉及多个表的SQL查询,如何构建这样的PDO语句?
因为这不起作用:
$stmt = $pdo -> prepare("UPDATE category, product
SET product.category_id = category.id,
product.xxx = :product.xxx,
category.yyy = :category.yyy
WHERE product.category_slug = category.slug
AND product.aaa = :product.aaa"
);
$stmt->execute(array(
'product.xxx' => '',
'category.yyy' => '',
'product.aaa' => ''
));
这给出了这些错误:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]:
Invalid parameter number: parameter was not defined'
PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined
如何使这项工作? PDO似乎不允许标记参数中的周期点?我想我注定要下注?
答案 0 :(得分:2)
以下是命名占位符的允许字符:
[:] [A-ZA-Z0-9 _] +;
字母数字和下划线。
参考。 https://github.com/php/php-src/blob/master/ext/pdo/pdo_sql_parser.re(这是来源)