mysql查询的WHERE子句中未分配的php变量

时间:2015-06-05 03:09:01

标签: php mysql

我在WHERE子句中查询了php变量。但如果变量未分配,它不会返回结果。

$customer = isset($_REQUEST['customer'])?$_REQUEST['customer']:'';
$territory = isset($_REQUEST['territory'])?$_REQUEST['territory']:'';
$status = isset($_REQUEST['status'])?$_REQUEST['status']:'';

$getOrder = "SELECT * FROM order WHERE Customer = '$customer' AND Territory = '$territory' AND Status = '$status'";
$getOrderQuery = mysql_query($getOrder);
while($iRow = mysql_fetch_array($getOrderQuery))
{ .... }

如果分配了三个变量,则返回结果。我需要做什么才能使查询返回结果,即使变量是空的?

1 个答案:

答案 0 :(得分:2)

我无法评论你的帖子,但我可以留下答案。

尝试echo $getOrder; 确保变量符合您的期望,然后使用MySQL客户端或phpMyAdmin直接在数据库上执行查询。

此外,您应该转义变量,因为您对SQL注入攻击很有价值。我喜欢使用PDO API

您也可以根据以下评论尝试此操作

SELECT * FROM order 
WHERE IFNULL(Customer, '') IN('$customer', '') AND IFNULL(Territory,'') IN('$territory','') AND IFNULL(Status, '') IN('$status','')";