mysql - PDO MySQL 查询在 LIKE 子句中使用撇号

标签 mysql pdo sql-like in-operator

我有以下查询

$area = "AREA V";

$sql = $pdo->prepare("SELECT areas FROM ranks WHERE areas LIKE :area");
$sql->bindValue(':area', '%' . $area . '%');
$sql->execute();
$num = $sql->rowCount();

专栏area包含数据,例如'AREA I', 'AREA V', 'AREA VII' .

问题是当我使用 LIKE '%AREA V%' 执行查询时有结果没有 AREA V但与 AREA VIAREA VII 。没错,也应该如此,但我不希望这样。

我尝试在 LIKE 中添加撇号条款,但我无法让它发挥作用。

我尝试过的事情:

// using apostrophes and PDO::PARAM_STR
$sql = $pdo->prepare("SELECT areas FROM ranks WHERE areas LIKE :area");
$sql->bindValue(':area', '%'' . $area . ''%', PDO::PARAM_STR);

// using IN
$sql = $pdo->prepare("SELECT areas FROM ranks WHERE :area IN (areas)");
$sql->bindValue(':area', $area);

最好的方法是什么?

最佳答案

我假设您正在使用单引号搜索'Area V'。我认为你只需要正确分隔字符串即可。像这样的东西:

// using apostrophes and PDO::PARAM_STR
$sql = $pdo->prepare("SELECT areas FROM ranks WHERE areas LIKE :area");
$sql->bindValue(':area', "%'" . $area . "'%", PDO::PARAM_STR);

您想要的值在 SQL 中表示为 '%''Area V'''。双单引号用于将单引号放入字符串中。

关于mysql - PDO MySQL 查询在 LIKE 子句中使用撇号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32025013/

相关文章:

php - PDO: lastInsertId() 是一个单独的查询吗?

php - 将脚本从 mysql* 重写为 PDO

sql - 创建 SQL 'LIKE' 语句来查找特定的数字和字母模式

mysql - 有一个列等于另一个表的计数吗?

mysql - 在 virtualmin 中创建虚拟服务器(无法完成安装)

php - 故障排除 'undefined variable' 错误

mysql - 如何在逗号分隔值中使用 MySQL LIKE

php对非对象上的成员函数prepare()的致命调用

php - 选择要在主页中显示的所有帖子及其类别和标签

mysql - SQL:使用 LIKE,如果搜索匹配该行中的任何值,则返回该行