使用IN()函数的mysql UPDATE不能使用预准备语句

时间:2017-05-09 22:05:23

标签: php mysql

所以我在MySQL表中列出了许多行,每行旁边都有一个复选框,您可以选择这些行,然后单击列' sumokejo'中的按钮更新编号。它工作正常,但只对第一行,它应该更改所有选定的行,但它只适用于第一行,无论您选择它们​​的顺序。

$pasirinko = implode(',', $_POST['checkbox']);
         $susimokejo= 0;

                $sumokejo1 = $conn->prepare("UPDATE mokiniai SET sumokejo=? WHERE id IN(?)");
                if ($sumokejo1 === false) {
      trigger_error($this->mysqli->error, E_USER_ERROR);
    }
                $sumokejo1->bind_param("is", $susimokejo, $pasirinko);
                if ($sumokejo1->execute()) {
                  echo $pasirinko;
                //echo '<meta http-equiv="refresh" content="0">';
                ?>
                <?php
                }
                else {
                  echo 'something is not right';
                }

echo $pasirinko仅用于测试,它正确显示了一系列选定的行&#39;这样的ids:18,16,19。所以我想唯一剩下的就是IN()函数。 我使用xampp和MariaDB这可能有问题吗?我应该安装纯MySQL吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

对于任何想知道我通过使用for循环而不是IN()解决了这个问题的人 它看起来像这样:

$pasirinko = $_POST['checkbox']; // my array of IDs
    $susimokejo= 0;

                $sumokejo = $conn->prepare("UPDATE mokiniai SET sumokejo=? WHERE id = ?");
                for ($i = 0; $i<count($pasirinko); $i++) {
                $sumokejo->bind_param("is", $susimokejo, $pasirinko[$i]);
                $sumokejo->execute();
              }
                echo '<meta http-equiv="refresh" content="0">';

                $sumokejo->close();