-1

以下代码应该检查表的列名。然后检查相应的变量是否已为 $_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');工作原理。

4

3 回答 3

0

问题就在这里$array .= array(':$columnname' => $_POST[$columnname],);

您有,一部分不是文字的值。改变它就像

$array .= array(':$columnname' => $_POST[$columnname] . ",");

您还可以将列名和值添加到数组中,implode(",", $array)因此您不必使用rtrim

于 2013-07-22T16:33:52.483 回答
0

而不是使用

$array .= array(':$columnname' => $_POST[$columnname],);

并应用于rtrim结果,我建议使用更简单且故障安全的方法:

$array[':$columnname'] = $_POST[$columnname];
于 2013-07-22T16:36:50.413 回答
0

改变这个:

$array .= array(':$columnname' => $_POST[$columnname],);

对此:

$array[':$columnname'] = $_POST[$columnname];

之后仅在 $sql 上使用 rtrim。

于 2013-07-22T16:37:13.540 回答