如何使用php foreach更新mysql数据库

时间:2018-12-17 13:35:52

标签: php mysql foreach

我正在一个项目中,当用户批准任务(使用批准和拒绝单选按钮选择)时,必须更新具有相同任务ID的所有数据库行。每个任务都有子任务,我也希望更新子任务,而不仅仅是主要任务。我不确定如何实现foreach条件。这是我的代码:

foreach( $_POST['task_id'] as $id) {
  $ids = $id["pro_id"];
}

$update = "UPDATE tasks SET for_checking = 'no', approved = 'yes' WHERE task_id = $ids";

我知道我的编码有误,对此表示抱歉。我希望有人可以帮助我改善代码。或者有人告诉我,除了使用foreach之外,还有其他方法。新手学生在这里。预先感谢!

1 个答案:

答案 0 :(得分:4)

您应该做的是使用prepared statements。处理用户输入($ _POST,$ _ GET)时-最好使用准备好的语句。准备好的语句可以保护您免受 SQL注入。您可以使用mysqli库,但我个人更喜欢PDO。

下面是一些有关如何设置PDO的示例代码:

<?php
    $pdo = new \PDO('mysql:hostname=localhost;dbname=my_db', 'user', 'password');

    # we now have access to function in PDO! Happy days
    # we write your SQL outside the foreach loop
    $sql = 'update `table` set `field` = :value;';
    # prepare your statement
    $res = $pdo->prepare($sql);

    # loop through data
    foreach ($_POST['ids'] as $id)
    {
        $res->execute(array(':value' => $id));
    }

    # now we've done an SQL statement that's fast and safe!