执行PHP多个MYSQL查询,但只有一个工作

时间:2016-09-19 12:32:23

标签: php mysqli

当我点击向上或向下按钮时,我尝试运行几个查询来交换数据库中的排序顺序值,但是当下面的代码在第二个查询上运行时运行。

if ($_POST['up']){
    $sort_this = $_POST['sort'];
    $sort_other = $_POST['sort'] - 1;

    $sql_this = "UPDATE portfolio SET sort = $sort_this -1 WHERE sort = $sort_this";
    mysqli_query($conn, $sql_this);

    $sql_other = "UPDATE portfolio SET sort = $sort_other +1 WHERE sort = $sort_other";
    mysqli_query($conn, $sql_other);
}

当我注释掉另一个时,它们都可以完全正常工作,但是当它们都显示时问题如上所述。我也尝试在mysqli_multi_query中运行它,但是它也没有用。

有什么想法吗? 感谢

1 个答案:

答案 0 :(得分:3)

鉴于数据量有限,我最好的猜测是他们都会执行,但他们并没有做你认为他们应该做的事情。

假设$ _POST [' sort']是数字3,这意味着$ sort_this也是3。 第一个查询将通过数据库并将所有3个更新为2。

$ sort_other将是3-1(2),因此第二个查询将通过数据库并将所有2更新为3.有效地撤消第一个查询所执行的操作。 (并将其他2到3改为

您永远不会看到第一个查询的最终结果,因为第三个查询将覆盖第一个查询所做的所有更改。

此外,简单地将变量粘贴到像您一样的查询中是不好的做法。它很容易被SQL注入。您可以使用预准备语句来避免这种情况:http://php.net/manual/en/pdo.prepared-statements.php