PDO准备了带有%和concat的报表


PDO Prepared Statements with % and concat

我正在将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();