实现像PDO查询实现像PDO查询(implement LIKE query in PDO)

2019-06-02 13:52发布

我正在运行的问题在PDO实施LIKE

我有这个疑问:

$query = "SELECT * FROM tbl WHERE address LIKE '%?%' OR address LIKE '%?%'";
$params = array($var1, $var2);
$stmt = $handle->prepare($query);
$stmt->execute($params);

我检查了$var1$var2他们同时包含我要搜索的话,我的PDO工作正常,因为我的一些查询的SELECT INSERT他们的工作,它只是我不熟悉LIKE这里PDO。

结果没有返回。 难道我的$query是语法正确的?

Answer 1:

你必须包含%的迹象$params ,不在查询:

$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);

如果你想看看在你前面的代码生成的查询,你会看到类似这样的SELECT * FROM tbl WHERE address LIKE '%"foo"%' OR address LIKE '%"bar"%' ,因为准备的语句是引用一个已经引用字符串内你的价值观。



Answer 2:

不,你不需要引用准备的占位符。 此外,包括您的变量里面%痕迹。

LIKE ?

而在变量: %string%



Answer 3:

$query = "SELECT * FROM tbl WHERE address LIKE ? OR address LIKE ?";
$params = array("%$var1%", "%$var2%");
$stmt = $handle->prepare($query);
$stmt->execute($params);


Answer 4:

你可以看到下面的例子

$title = 'PHP%';
$author = 'Bobi%';
// query
$sql = "SELECT * FROM books WHERE title like ? AND author like ? ";
$q = $conn->prepare($sql);
$q->execute(array($title,$author));

希望它会工作。



Answer 5:

只需使用以下命令:

$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)) { ... }


文章来源: implement LIKE query in PDO