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

时间:2015-08-15 13:07:13

标签: 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);

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

我假设您使用单引号搜索'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'''。双引号用于将单引号放入字符串中。