我正在尝试创建一个表单,在提交时,它将更新插入到表单中的值并保持未应答的值不变。
我的想法是创建一个循环,将所有$ _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语句的最后一个值为止。
有没有在最后一个循环中排除逗号?谢谢!
答案 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
。