$ _POST循环更新mysql语句

时间:2016-06-05 21:35:34

标签: php mysql loops

我正在尝试创建一个表单,在提交时,它将更新插入到表单中的值并保持未应答的值不变。

我的想法是创建一个循环,将所有$ _POST键和值设置为更新语句。每个键的名称与我表中的每一列相对应,因此它应该可以解决。

这就是我提出的:

$query = "UPDATE accounts SET ";

    foreach($_POST as $field => $value) {
        if ($field != null && $value != 'Update Information!'){
            $query .= "{$field} = {$value}";
            $query .= ", ";
    }
}
$query .= "WHERE id = {$current_user["id"]}";

我遇到的问题是循环的最后一行。循环在每个循环的末尾插入一个逗号,直到它弄乱UPDATE语句的最后一个值为止。

有没有在最后一个循环中排除逗号?谢谢!

2 个答案:

答案 0 :(得分:1)

我更喜欢使用数组和implode来执行此类任务。

$farray = array();
foreach($_POST as $field => $value) {
    $farray[] = "$field = '" . mysqli_real_escape_string($conn, $value) . "'";
}
$query .= implode(', ', $farray);

答案 1 :(得分:0)

只需在循环后使用,删除$query = substr($query, 0, -2)

然而,你的方法首先是危险的。 从未 在SQL查询中使用用户输入direclty。使用mysql_real_escape_string()正确转义或使用预准备语句(推荐)。想象一下

$_POST['something'] = "foo; DROP DATABASE; UPDATE accounts SET id = 5";

另请注意,mysql_*界面已过时 - 您应切换为mysqli_*PDO