我正在一个项目中,当用户批准任务(使用批准和拒绝单选按钮选择)时,必须更新具有相同任务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之外,还有其他方法。新手学生在这里。预先感谢!
答案 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!