我在我的 PHP 应用程序中使用 PDO 和准备好的语句。我将数组值绑定到查询中的占位符,如下所示:
// This method is called twice from somewhere in my app:
// setWhere ( 'col1', 50 );
// setWhere ( 'col2', 60 );
function setWhere ( $column, $value )
{
$this->bindings[$column] = $value;
}
然后我像这样执行我的查询:
// This query is constructed by the same class (sort of an ORM wrapper)
// $sql = "SELECT * FROM table WHERE col1 = :col1 OR col2 = :col2";
$stmt = $this->db->prepare ( $sql );
$stmt->execute ( $this->bindings );
它像这样工作得很好。但是当我需要OR
在同一列上选择时我该怎么办?然后我基本上会在已经存在的数组中设置一个索引:
setWhere ( 'col1', 50 );
setWhere ( 'col1', 60 );
这基本上设置了col1
两次索引:
$this->bindings['col1'] = 50;
$this->bindings['col1'] = 60;
在这种情况下,它永远不会起作用。
我怎样才能避免这个问题?