MySQL查询与PHP MySQL查询

时间:2014-04-04 16:20:46

标签: php mysql sql

我试图在PHP中使用一些特殊字符进行MySQL查询。如果我使用直接SQL在我的数据库上运行查询似乎有效:

SELECT SUM(quantity_ordered)  FROM `shopping_cart` 
   WHERE `cart_number` = 10316027
   AND `size` IN ('5&#188" x 8&#188"','5⅜" x 7¾"','4½" x 9½"')

上面的查询返回了预期的结果和SUM,但是当我把它放在我准备好的PHP查询中时,它不返回任何记录或SUM。

我怀疑它与每个大小的单引号有关,但如果删除它们,我会收到MySQL错误。我的PHP中的类似查询与直接数字和没有周围的引号工作正常。

我尝试过不同的方式来逃避特殊字符,但我想知道这个查询是否适用于这些类型的字符?

2 个答案:

答案 0 :(得分:1)

你的问题是你可能没有转义PHP字符串中的双引号。

试试这个

$qry = "SELECT SUM(quantity_ordered)  FROM `shopping_cart` 
WHERE `cart_number` = 10316027
AND `size` IN ('5&#188\" x 8&#188\"','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注入问题,你需要正确地转义你的引号。