Как обновить базу данных mysql с помощью php foreach - PullRequest
0 голосов
/ 17 декабря 2018

Я работаю над проектом, согласно которому, когда пользователь утверждает задачу (с помощью выбора и подтверждения переключателей), все строки базы данных с одинаковым идентификатором задачи должны быть обновлены.У каждой задачи есть подзадачи, и я хочу обновить подзадачи, а не только основную задачу.Я не уверен, как реализовать условие 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 голосов
/ 17 декабря 2018

Что вы должны сделать, это использовать подготовленные заявления .При работе с пользовательским вводом ($ _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!
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...