SELECT * FROM表WHERE列LIKE%?%

时间:2013-06-21 08:29:33

标签: php mysql

根据此处的信息MySQL query String contains 尝试使用?

创建pdo查询

使用以下

进行实验

SELECT * FROM Table WHERE Column LIKE %?%

SELECT * FROM Table WHERE Column LIKE ?%

SELECT * FROM Table WHERE Column LIKE %?

没有任何作用。得到错误

  

语法错误或访问冲突:1064 SQL中有错误   句法;查看与MySQL服务器版本对应的手册   要在'%...

附近使用正确的语法

尝试使用SELECT * FROM Table WHERE Column LIKE ?,但这不适用于contains

目标是获取查询SELECT * FROM Table WHERE Column contains ?

位置占位符(contains)的pdo ?语句是什么?

5 个答案:

答案 0 :(得分:6)

通过PHP连接字符串中的值来尝试这个,

$value = "valueHere";
$passThis = "%" . $value . "%";
// other pdo codes...
$stmt = $dbh->prepare("SELECT * FROM Table WHERE Column LIKE ?");
$stmt->bindParam(1, $passThis);
// other pdo codes...

答案 1 :(得分:1)

之后添加引号。例如: - like '%?%'

即:

SELECT * FROM table_name WHERE column_name like '%field_name%';

答案 2 :(得分:1)

我认为通配符应该在单引号内,例如;

SELECT * FROM Table WHERE Column LIKE '%?%';

返回包含特定列字段

内任何位置给出的字符串的任何记录

以'ber'开头的列数据,示例

SELECT * FROM Table WHERE Column LIKE 'ber%';

希望这有帮助

答案 3 :(得分:1)

在将参数传递给查询或

之前,在参数之前和之后放置%个字符
SELECT * FROM Table WHERE Column LIKE '%' + ? + '%'

SELECT * FROM Table WHERE Column LIKE ? + '%'

SELECT * FROM Table WHERE Column LIKE '%' + ?

虽然如果这会失败?为null,因为连接将产生null。你可以使用coalesce

SELECT * FROM Table WHERE Column LIKE '%' + Coalesce(?,'') + '%'

SELECT * FROM Table WHERE Column LIKE Coalesce(?,'') + '%'

SELECT * FROM Table WHERE Column LIKE '%' + Coalesce(?,'')

答案 4 :(得分:0)

如果您想使用预先准备好的陈述,请查看http://php.net/manual/de/pdo.prepared-statements.php

SELECT * FROM REGISTRY where name LIKE '%?%'