我正在尝试在mysql查询条件中选择确切的json值,目前我正在使用LIKE并且它可以工作,但是返回false positive。
我的代码是::
$id='1';
json数据示例:: ["1","12","38"]
$sql="SELECT * FROM `posts` WHERE `json_column` LIKE '%".$id."%' ";
使用此查询,它返回1和12.我怎么才能得到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);