以下代码应检查表的列名。然后检查相应的变量是否为$ _POST以及是否已将其添加到$ SQL。我相信包含一系列数组的数组存在问题,但我不知道如何将其修改。
$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');
正常工作。
答案 0 :(得分:0)
问题出在$array .= array(':$columnname' => $_POST[$columnname],);
你有,
部分的值不是文字的。改变它就像
$array .= array(':$columnname' => $_POST[$columnname] . ",");
您还可以将列名称和值添加到数组implode(",", $array)
,这样就不必使用rtrim
答案 1 :(得分:0)
而不是使用
$array .= array(':$columnname' => $_POST[$columnname],);
并在结果上应用rtrim
,我建议使用更简单且更安全的方法:
$array[':$columnname'] = $_POST[$columnname];
答案 2 :(得分:0)
改变这个:
$array .= array(':$columnname' => $_POST[$columnname],);
到此:
$array[':$columnname'] = $_POST[$columnname];
之后只在$ sql上使用rtrim。