动态SQL函数

时间:2012-07-31 20:19:42

标签: sql dynamic pdo

我希望构建一个能够动态生成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子句,它可以为数组中的每一行改变

1 个答案:

答案 0 :(得分:0)

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

PDO multi-Filter sql query

它将基于来自WHERE数组的命名param绑定动态构建基本$_POST子句,因此它不适用于?参数,但说实话,我不确定为什么你依靠数组的顺序来停止SQL注入和其他类似的攻击,因为数组的顺序不能总是在PHP中保证。