-1

我正在寻找构建一个函数,该函数将动态生成 SQL 并使用 PDO 和准备好的语句执行它,而无需对列名/where 子句进行硬编码。where 子句“卡路里”和“颜色”下面的示例是硬编码的,如果情况需要,我希望能够添加其他标准以及更少或没有 where 子句的功能。

$sth = $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?');
$sth->execute(array($calories, $colour));

这是一个插入函数,它允许您动态传递我创建的值。

public function insert($table,$columnValueArray){ 
     $columns = implode(",",array_keys($columnValueArray)); 
     $sql = "INSERT INTO ".$table." (?) VALUES (?)"; 
     $sth = $conn->prepare($sql); 

     foreach($columnValueArray as $singleArray){ 
         $values = implode(",",$singleArray); 
         $sth->execute(array($columns),$values); 
     } 
}

我想要一个与此类似的函数来创建一个更新函数,问题是更新函数需要一个 where 子句,它可以为数组中的每一行更改

4

1 回答 1

0

实际上,我前段时间对这个问题做出了类似的回答:

PDO多过滤sql查询

它将WHERE根据$_POST数组中的命名参数绑定动态构建基本子句,因此它不能与?参数一起使用,但老实说,我不确定为什么你要依赖数组的顺序来阻止 SQL 注入和其他此类攻击,因为在 PHP 中不能始终保证数组的顺序。

于 2012-08-05T21:46:19.420 回答