如何在mysql查询条件中选择精确的json值

时间:2015-05-17 00:59:52

标签: php mysql json

我正在尝试在mysql查询条件中选择确切的json值,目前我正在使用LIKE并且它可以工作,但是返回false positive。

我的代码是::

$id='1';

json数据示例:: ["1","12","38"]

$sql="SELECT * FROM `posts` WHERE `json_column` LIKE '%".$id."%' ";

使用此查询,它返回1和12.我怎么才能得到1?

1 个答案:

答案 0 :(得分:1)

请注意额外的引号:

$sql="SELECT * FROM posts WHERE json_column LIKE '%\"$id\"%'";

但是,如果$id来自用户输入,那么这对SQL注入是开放的。小心。

更安全的方法是使用PHP prepared statements的参数化查询,如下所示:

$stmt = $dbh->prepare("SELECT * FROM posts WHERE json_column LIKE '%\"?\"%'");
$stmt->bindParam(1, $id);