2014-10-07 79 views
1

對於涉及多個表的SQL查詢,我該如何構造這樣的PDO語句?如何在標記參數中使用句點以便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

將':product.xxx'改爲':product1'和'product.aaa'爲':product2',然後綁定相應的值。相同'category.yyy' – 2014-10-07 11:33:30

+0

@ V4KK4R,那麼我想這是不可能的標記參數中使用點? – 2014-10-07 11:35:52

+0

是不允許的。 – 2014-10-07 11:39:14

回答

2

下面是允許的字符對指定的佔位符:

[:] [A-ZA-Z0-9 _] +;

字母數字和下劃線。

Ref。 (這是源文件)