【发布时间】:2013-02-21 10:16:56
【问题描述】:
我想创建一个动态 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 上下文中使用,因为它依赖于活动的 DB 连接才能正常工作 -
谢谢。我不知道。
标签: mysql pdo dynamic-sql