PHP - >使用Foreach数组合并的PDO更新功能

时间:2013-07-22 16:31:02

标签: php arrays pdo sql-update

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

3 个答案:

答案 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。