我有以下查询
$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 VI
和AREA 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/