我想创建一个动态的SQL语句并使用PDO运行它。我的问题是,我有一些参数,我想不出一种方式来传递参数。 例如:Mysql动态SQL语句与PDO和参数
$query = "Select * from tbl_task where 1=1";
if (!empty($name)) $query .= " AND name = ?";
if (!empty($status)) $query .= " AND status = ?"
$db_stmt = new PDOStatement();
$db_stmt = $this->db->prepare($query);
$db_stmt->bindParam (1,$name);
$db_stmt->bindParam (2,$status);
我的参数不会被绑定,我不知道我有多少个参数进行绑定,除非我写if语句,但与bindParam指令相同。
我试着用mysql_real_escape_string
代替bindParam到PDO,但由于某种原因,我的参数被添加为空。
有关如何构建动态查询并将参数绑定到PDO的任何想法?
编辑1:
$arr = array();
if (!empty($name)){
$query .= " AND `name` like :NAME";
$arr['NAME'] = $name;
}
$db_stmt = new PDOStatement();
$db_stmt = $this->db->prepare($query);
$db_stmt->execute($arr);
我如何写一个 “喜欢” 的说法?我试过
$query .= " AND `name` like :NAME" . "%";
并且不工作。
注意,不要混合数据库库的功能。 'mysql_real_escape_string()'不能用在PDO上下文中,因为它依赖于活动的数据库连接正常工作 – 2013-02-21 10:28:10
谢谢。我不知道。 – 2013-02-22 06:48:51