gpt4 book ai didi

带有PDO和参数的Mysql动态sql语句

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:46 24 4
gpt4 key购买 nike

我想创建一个动态 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);

我的参数没有被绑定(bind),我不知道我必须绑定(bind)多少参数,除非我用 bindParam 指令编写相同的 if 语句。

我尝试使用 mysql_real_escape_string 代替 bindParam 到 PDO,但由于某些原因我的参数添加为空。

关于如何构建动态查询并将参数绑定(bind)到 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" . "%";

并且不工作。

最佳答案

我通常做的是:

$query = "Select * from `tbl_task` where 1=1";
$arr = array();
if (!empty($name))
{
$query .= " AND `name` = :NAME";
$arr['NAME'] = $name;
}
if (!empty($status))
{
$query .= " AND `status` = :STATUS";
$arr['STATUS'] = $status;
}
$this->db->beginTransaction();
try
{
$tmp = $this->db->prepare($query);
$tmp->execute($arr);
$this->db->commit();
}
catch(PDOException $ex)
{
$this->db->rollBack();
$this->log->error($ex->getMessage());
}

关于带有PDO和参数的Mysql动态sql语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14999691/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com