我正在将PHP中的一些MySQL查询转换为PDO准备的语句查询。
大多数查询都很简单,但我遇到了几个查询,我不确定它们应该是什么样子的
在我正在转换的常规查询中:
where field ='$type'
进入
where field =:type
和更改
$results->execute();
进入
$results->execute(数组('type'=>$type));
场景1
通常在转换它们时,变量在查询中变为:type,但有了%,它变为:type%或:type'%'
where field like '$type%'
场景2
在使用的中插入时
concat(uuid(),'-$id')
应该如何处理?当变量前面有-时,我该如何处理?
如有任何帮助,我们将不胜感激。
您需要理解的是,占位符必须仅表示完整的数据文本。
因此,您的代码将是:
场景1
在PHP、中创建带有通配符的搜索字符串
$type = "$type%";
然后你可以用通常的方法把它绑起来。
场景2
只需为CONCAT()再添加一个参数:
concat(uuid(),'-', :id)
在场景1中,您应该执行与简单相同的操作
$pdo = new PDO("mysql:host=localhost;dbname=database;","root","");
$smt = $pdo->prepare("...... WHERE col=:type");
场景1:
$smt->bindParam(":type", $type . '%' , PDO::PARAM_STRING);
场景2:
$smt->bindParam(":type", concat(uuid(),"-$id") , PDO::PARAM_STRING);
在那之后,你只需要执行并做你自己的事情:
$smt->execute();