如何在 PHP 中调试 SQL 查询的串联


How to debug the concatenation of a SQL query in PHP?

我的查询有一些东西,但我无法找到什么。

    $keys = array_keys($fields);
    $values = array_values($fields);
    $sql = "UPDATE " .$table. " SET " .implode("`, `", $keys) ."='".implode("', '", $values) . "' WHERE id={$id}";

它显示为:UPDATE users SET namepassword'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