动态SQL函数

动态SQL函数,sql,dynamic,pdo,Sql,Dynamic,Pdo,我希望构建一个函数,该函数将动态生成SQL,并使用PDO和prepared语句执行它,而不需要硬编码列名/where子句。 下面的where子句“卡路里”和“颜色”的示例是硬编码的,如果情况需要,我希望具有能够添加额外标准以及更少或不添加where子句的功能 $sth = $dbh->prepare('SELECT name, colour, calories FROM fruit WHERE calories < ? AND colour = ?'); $sth-&

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

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

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


它将基于
$\u POST
数组中的命名参数绑定动态构建一个基本
WHERE
子句,这样它就不会与
参数一起工作,但老实说,我不确定为什么您会依赖数组顺序来停止SQL注入和其他此类攻击,因为数组顺序不能始终得到保证PHP.

谁能把我记下来?请提供一个理由。我想知道这是否是解决这个问题的正确方法?我想你是因为没有提出问题而被否决了。您陈述了需求,但没有表示自己试图解决它。@Colin747:请不要将代码发布到注释中。返回并将这些新细节编辑到问题中。目前,你的问题有被关闭的危险。
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); 
     } 
}