我正在尝试在PHP脚本中准备INSERT查询并始终获得FALSE结果:
$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-> errno为0,$ mysqli->错误也为空。 当我用实际值替换查询参数并在phpMyAdmin中执行此查询时,它工作得很好。
编辑#1 即使在查询的简化版本上,mysqli-> prepare()也会失败:
INSERT INTO `shopping_cart_data`(`cart_id`, `type`, `item`, `size`, `cost`) SELECT * FROM (SELECT ?,?,?,?,?) AS tmp LIMIT 1
请帮忙。
答案 0 :(得分:0)
参考Andrew的评论,问题通过查询更正得以解决。查询的工作版本是:
INSERT INTO `shopping_cart_data`(`cart_id`, `type`, `item`, `size`, `cost`)
SELECT ?,?,?,?,? FROM DUAL
WHERE NOT EXISTS (SELECT `id` FROM `shopping_cart_data` WHERE `cart_id`=? AND `item`=?)