MySQLi UPDATE与子查询无法正常工作

时间:2015-09-22 17:06:11

标签: php mysql mysqli

我不知道我的查询有什么问题,这个子查询在使用select时运行正常,但是当更新它不起作用时,我如何为更新查询创建子查询?

$query = "UPDATE `product`
        SET `default` = '0'
        WHERE `product_name` = (
            SELECT `product_name`
            FROM `product`
            WHERE `product_id` = {$_GET['bag']}
        ) AND `product_id` != {$_GET['bag']};
";

$ result = mysqli_query($ connection,$ query);

2 个答案:

答案 0 :(得分:1)

MySQL不允许您引用您在子查询中更新的同一个表。您必须使用UPDATE product AS p1 JOIN product AS p2 ON p1.product_name = p2.product_name SET default = '0' WHERE p2.product_id = {$_GET['bag']} AND p1.product_id != {$_GET['bag']}

var opts = $("select > option:not(:first-child)");
var texts = [];
$.map(opts, function(val, key){
    texts.push(val.innerText);
});
顺便说一句,你还应该学习使用准备好的查询而不是变量替换来防止SQL注入。

答案 1 :(得分:0)

@Barmar打败了我,但这是我的回答。

UPDATE `product` 
INNER JOIN `product` AS `p` ON `p`.`product_name` = `product`.`product_name` AND `p`.`product_id` = {$_GET['bag']}
SET `default` = '0'
WHERE `product`.`product_id` != {$_GET['bag']};