我的查询有一些东西,但我无法找到什么。
$keys = array_keys($fields);
$values = array_values($fields);
$sql = "UPDATE " .$table. " SET " .implode("`, `", $keys) ."='".implode("', '", $values) . "' WHERE id={$id}";
它显示为:UPDATE users SET name
,password'Rick is vets', 'sdfg' WHERE id=5
但它必须显示为: UPDATE users SET name = 'Rick is vets', password='sdfg' WHERE id=5
尝试遍历 $fields
数组以创建如下所示的更新字符串:
$update_string='';
foreach ($fields as $key=>$value)
{
$update_string .= $key."='$value', ";
}
然后使用rtrim()
函数从字符串中删除最后一个逗号字符:
$update_string = rtrim($update_string, ", ");
然后,您的查询将变为:
$sql = "UPDATE " .$table. " SET " .$update_string. " WHERE id={$id}";
这只是为了说明这个概念,因为您的代码可能仍然是 对SQL注入攻击开放,在这种情况下,您应该使用准备好的 陈述。
$setString='';
foreach($fields as $k=>$v){
$setString .=$k." = '".$v."', ";
}
$setString=rtrim($setString,', ');
在查询中包含$setString