Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL查询未返回预期结果_Php_Mysql - Fatal编程技术网

Php MySQL查询未返回预期结果

Php MySQL查询未返回预期结果,php,mysql,Php,Mysql,假设我在表格中有以下信息-1表示无限制 Price Minutes SMS Data 7.50 200 -1 250 10 250 -1 1000 12 250 -1 -1 在我的表单上,我有许多字段和一个复选框,如果你想要无限的东西,那么我有一个SQL查询,它有一些变量,这取决于复选框是否勾选如下: //check to see if minutes is set as unl

假设我在表格中有以下信息-1表示无限制

Price    Minutes    SMS    Data
7.50     200        -1     250
10       250        -1     1000
12       250        -1     -1
在我的表单上,我有许多字段和一个复选框,如果你想要无限的东西,那么我有一个SQL查询,它有一些变量,这取决于复选框是否勾选如下:

//check to see if minutes is set as unlimited. if they are, set sms as -1
   if ($minunlim=="on"){
    $minquery = "minutes = -1";
    $minutes = "Unlimited";
   } else {
        $minutes = $_GET["minutes"];
    $minquery = "minutes >= '$minutes' OR minutes = -1";
   }

//check to see if sms is set as unlimited. if they are, set sms as -1
if ($smsunlim=="on"){
    $smsquery = "sms = -1";
    $sms = "Unlimited";
} else {
    $sms = $_GET["sms"];
    $smsquery = "sms >= '$sms' OR sms = -1";
}

//check to see if sms is set as unlimited. if they are, set sms as -1
if ($dataunlim=="on"){
    $dataquery = "data = -1";
    $data = "Unlimited";
} else {
    $data = $_GET["data"];
    $dataquery = "data >= '$data' OR data = -1";
}

//run query
$getprices = $this->db->query("SELECT * FROM gg_Crates WHERE 
    price <= '$price' AND $minquery
    AND ($smsquery)
    AND ($dataquery)");
//检查分钟数是否设置为无限制。如果是,则将sms设置为-1
如果($minunlim==“开”){
$minquery=“分钟=-1”;
$minutes=“无限”;
}否则{
$minutes=$_GET[“minutes”];
$minquery=“分钟数>=”$minutes“或分钟数=-1”;
}
//检查sms是否设置为无限制。如果是,则将sms设置为-1
如果($smsunlim==“on”){
$smsqury=“sms=-1”;
$sms=“无限”;
}否则{
$sms=$_GET[“sms”];
$smsquery=“sms>=”$sms”或sms=-1”;
}
//检查sms是否设置为无限制。如果是,则将sms设置为-1
如果($dataunlim==“on”){
$dataquery=“data=-1”;
$data=“无限”;
}否则{
$data=$_GET[“data”];
$dataquery=“data>=”$data”或data=-1”;
}
//运行查询
$getprices=$this->db->query(“从GGU板条箱中选择*,其中

价格你的逻辑可能有问题

这个

这是:

data >= '$data' OR data = -1
是有问题的表示形式,请将查询更改为:

$getprices = $this->db->query("SELECT * FROM gg_Crates WHERE 
price <= '$price' AND ($minquery)
AND ($smsquery)
AND ($dataquery)");
$getprices=$this->db->query(“从GGU板条箱中选择*

似乎无法解决问题的价格:(更新问题以反映建议。然后你的逻辑有问题,想想你真正需要什么,以及你如何表达这个问题。我知道这似乎是在看最低的数字,然后从那里向上拉。例如,有一排有100分钟或更长时间(7.50)因此,它选择该行,而不是继续查询。这更像是一个SQL问题,就像我直接运行该查询一样,我会得到相同的结果。您得到的是价格为7.5的行,因为它满足价格='100',但其利用率,因此数据也必须大于或等于300,但不是。显示更多代码…您在哪里设置$price、$smsunlim等
data >= '$data' OR data = -1
$getprices = $this->db->query("SELECT * FROM gg_Crates WHERE 
price <= '$price' AND ($minquery)
AND ($smsquery)
AND ($dataquery)");