MySQL查询与PHP MySQL查询

MySQL查询与PHP MySQL查询,php,mysql,sql,Php,Mysql,Sql,我正在用PHP做一个带有一些特殊字符的MySQL查询。如果我使用straight 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&#1

我正在用PHP做一个带有一些特殊字符的MySQL查询。如果我使用straight 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½"')
上面的查询返回预期的结果和总和,但当我将其放入准备好的PHP查询中时,它不会返回任何记录或总和

我怀疑这和每个大小的单引号有关,但如果我删除它们,我会得到一个MySQL错误。在我的PHP中,一个类似的查询可以很好地使用直数字,并且没有周围的引号


我尝试了不同的方法来转义特殊字符,但我想知道这个查询是否能处理这些类型的字符?

您的问题是您可能没有转义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½\"')"

根据您对准备好的声明的评论:

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注入问题,您需要正确转义引号。

您在php中准备的语句是什么样子的,变量的确切值是什么?@jeroen这就是重点。我认为他没有使用事先准备好的声明。但是只有mysql_query这里有一个准备好的语句prepare(“selectsum(quantity_ordered),item_number FROM shopping_cart,其中cart_number=:cart_number和size IN($items)”;$items包含与我的sql语句相同的变量。请在查询前使用'cart\u number和item\u number的mysql\u real\u escape\u string。向我们显示您尝试执行的实际PHP代码。请编辑原始问题并发布实际代码,而不是摘要或释义。做到了!我不认为我需要,因为它们在双引号内,谢谢!这就是问题所在。它们在双引号中,php认为下一个双引号结束了字符串。