Lea*_*cia 37 php mysql pdo sql-like
我在PDO中实现LIKE时遇到问题
我有这个问题:
$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'";
$params = array($var1, $var2);
$stmt = $handle->prepare($query);
$stmt->execute($params);
Run Code Online (Sandbox Code Playgroud)
我检查了它们$var1,$var2它们包含了我想要搜索的单词,我的PDO工作正常,因为我的一些查询SELECT INSERT工作,这只是我LIKE在PDO中不熟悉的.
结果是没有返回.我$query的语法是否正确?
Car*_*rós 76
您必须%在$params,而不是在查询中包含标志:
$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);
Run Code Online (Sandbox Code Playgroud)
如果您在先前的代码中查看生成的查询,您会看到类似的内容SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%',因为预准备语句在已引用的字符串中引用您的值.
只需使用以下内容:
$query = "SELECT * FROM tbl WHERE address LIKE CONCAT('%', :var1, '%')
OR address LIKE CONCAT('%', :var2, '%')";
$ar_val = array(':var1'=>$var1, ':var2'=>$var2);
if($sqlprep->execute($ar_val)) { ... }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41454 次 |
| 最近记录: |