0
我想準備在PHP腳本插入查詢,並始終得到錯誤結果的INSERT語句:無法準備與子查詢
$mysqli -> prepare(
'INSERT INTO `shopping_cart_data`(`cart_id`, `type`, `item`, `size`, `cost`) '
. 'SELECT * FROM (SELECT ?,?,?,?,?) AS tmp '
. 'WHERE NOT EXISTS (SELECT `id` FROM `shopping_cart_data` WHERE `cart_id`=? AND `item`=?) '
. 'LIMIT 1'
);
的$ mysqli->錯誤號爲0和$ mysqli->錯誤也是空的。 當我用實際值替換查詢參數,並在phpMyAdmin中執行此查詢時,它工作得很好。
INSERT INTO `shopping_cart_data`(`cart_id`, `type`, `item`, `size`, `cost`) SELECT * FROM (SELECT ?,?,?,?,?) AS tmp LIMIT 1
請幫助:
編輯#1 mysqli->準備()即使在查詢的簡化版失敗。
您試圖插入什麼值? –
'sssid':類似於'sdgsi2492lksjfsdf','type_x','item-name',100,5。但是問題發生在準備階段,而不是bind_params。 – user3447070
有兩件事:一,如果將「FROM DUAL」添加到非表子查詢會發生什麼?這是沒有實際表格的查詢的佔位符表。二,如果你只是做了「SELECT?,?,?,?,?」會發生什麼?而不是「SELECT * FROM(SELECT?,?,?,?,?)」?這兩個是相同的。 – Andrew