以下代码用于检查表的列名。然后检查相应的变量是否为$_POST,以及是否已将其添加到$SQL中。我相信包含一系列数组的数组有问题,但我不知道如何dix它。
$where = $_POST['where'];
$is = $_POST['is'];
$table = $_POST['table'];
$sql = "UPDATE $table SET";
$array = array();
$columnnames = columnnames('blog');
foreach ($columnnames as $columnname){
if($_POST[$columnname]){
$sql .= " $columnname = :$columnname,";
$array .= array(':$columnname' => $_POST[$columnname],);
}
}
$sql = rtrim($sql,',');
$array = rtrim($array,',');
$sql .= " WHERE $where = '$is'";
$q = $rikdb->prepare($sql);
$q->execute($array);
为了便于理解,请注意$columnnames = columnnames('blog');
的工作原理。
更改此项:
$array .= array(':$columnname' => $_POST[$columnname],);
到此:
$array[':$columnname'] = $_POST[$columnname];
之后只在$sql上使用rtrim。
这里的问题是$array .= array(':$columnname' => $_POST[$columnname],);
值的,
部分不是文字。把它改成
$array .= array(':$columnname' => $_POST[$columnname] . ",");
您还可以将列名和值添加到数组和implode(",", $array)
中,这样就不必使用rtrim
而不是使用
$array .= array(':$columnname' => $_POST[$columnname],);
并将rtrim
应用于结果,我建议使用更简单、安全的方法:
$array[':$columnname'] = $_POST[$columnname];