Я работаю над проектом, согласно которому, когда пользователь утверждает задачу (используя варианты выбора и подтверждения переключателей), все строки базы данных с одинаковым идентификатором задачи должны быть обновлены. У каждой задачи есть подзадачи, и я хочу обновить подзадачи, а не только основную задачу. Я не уверен, как реализовать условие 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. Новичок студент здесь. Заранее спасибо!
Что вы должны сделать, это использовать готовые заявления. При работе с пользовательским вводом ($ _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!
Других решений пока нет …