3

根据此处的信息MySQL 查询字符串包含 尝试创建 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 语句是什么?

4

5 回答 5

7

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

$value = "valueHere";
$passThis = "%" . $value . "%";
// other pdo codes...
$stmt = $dbh->prepare("SELECT * FROM Table WHERE Column LIKE ?");
$stmt->bindParam(1, $passThis);
// other pdo codes...
于 2013-06-21T08:34:38.103 回答
3

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

IE:

SELECT * FROM table_name WHERE column_name like '%field_name%';
于 2013-06-21T08:32:45.500 回答
1

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

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

这将返回包含特定列字段中任意位置给出的字符串的任何记录

以“ber”开头的列数据,示例

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

希望这可以帮助

于 2013-06-21T08:40:43.270 回答
1

在将参数传递给查询之前将%字符放在参数之前和之后,或者

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

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

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

虽然这会失败 if ? 为空,因为连接将产生空值。你可以使用合并

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

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

SELECT * FROM Table WHERE Column LIKE '%' + Coalesce(?,'')
于 2013-06-21T08:44:32.360 回答
0

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

SELECT * FROM REGISTRY where name LIKE '%?%'
于 2013-06-21T08:34:28.747 回答