0

我有以下查询

$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 VIand的结果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);

最好的方法是什么?

4

1 回答 1

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'''. 双单引号用于将单引号放在字符串中。

于 2015-08-15T13:42:41.030 回答