我试图在PHP中使用一些特殊字符进行MySQL查询。如果我使用直接SQL在我的数据库上运行查询似乎有效:
SELECT SUM(quantity_ordered) FROM `shopping_cart`
WHERE `cart_number` = 10316027
AND `size` IN ('5¼" x 8¼"','5⅜" x 7¾"','4½" x 9½"')
上面的查询返回了预期的结果和SUM,但是当我把它放在我准备好的PHP查询中时,它不返回任何记录或SUM。
我怀疑它与每个大小的单引号有关,但如果删除它们,我会收到MySQL错误。我的PHP中的类似查询与直接数字和没有周围的引号工作正常。
我尝试过不同的方式来逃避特殊字符,但我想知道这个查询是否适用于这些类型的字符?
答案 0 :(得分:1)
你的问题是你可能没有转义PHP字符串中的双引号。
试试这个
$qry = "SELECT SUM(quantity_ordered) FROM `shopping_cart`
WHERE `cart_number` = 10316027
AND `size` IN ('5¼\" x 8¼\"','5⅜\" x 7¾\"','4½\" x 9½\"')"
答案 1 :(得分:1)
根据您对准备好的声明的评论:
SELECT SUM(quantity_ordered) FROM wholesale_shopping_cart WHERE cart_number = :cart_number AND item_number IN ($items)
您应该使用单独的绑定变量构建$items
数组,使其看起来像:
SELECT SUM(quantity_ordered) FROM wholesale_shopping_cart
WHERE
cart_number = :cart_number
AND item_number IN (:val1, :val2, :val3)
然后,您可以绑定变量并执行查询。
如果你把你的变量直接放在你的sql语句中,你会(可能......)有一个sql注入问题,你需要正确地转义你的引号。