Php和ajax比较问题

时间:2014-08-20 16:18:18

标签: php jquery ajax mysqli

我正在调用这个php文件。

$a = 'old';
$b = 'new';
if ($_POST['info-type'] == $a || $b)
{
    $info = $_POST['info-type'];
    $query = "SELECT * FROM `tld` WHERE type = '".$var."'";
} 

$query = "SELECT * FROM `tld` ";


$result = mysqli_query($link,$query);

while($row = mysqli_fetch_assoc($result))
{
    echo '<div>'.$row['something'].'</div>';
}

发布的数据为'all' 'new''old'

如果我将数据作为newold发送,则脚本按预期工作和输出。 如果发布的数据既不是新的也不是旧的,而是全部相反,它会失败并且不会显示任何错误或回复任何内容(我也通过开发工具进行监控)。

所以,我试过这个:

if ($_POST['info-type'] == $a || $b)
{
    $info = $_POST['info-type'];
    $var = "SELECT * FROM `tld` WHERE type = '".$var."'";
} elseif ($_POST['info-type'] == 'all')
{
    $query = "SELECT * FROM `tld` ";
}

但剧本仍然失败。如果我完全删除IF语句并使用没有WHERE子句的查询,就像在elseif之后那样,它是否有效?

2 个答案:

答案 0 :(得分:2)

这句话很奇怪:

if ($_POST['info-type'] == $a || $b) {

您可能打算:

if ($_POST['info-type'] === $a || $_POST['info-type'] === $b) {

此外,在这种情况下===是好的,因为两个变量的类型都是string

如果$_POST['info-type'] == $a || $b truethy (它是),

$b将始终为真。

答案 1 :(得分:1)

您需要将$_POST['info-type']$a$b进行比较:

if ($_POST['info-type'] == $a || $_POST['info-type'] == $b)

您所拥有的问题是$_POST['info-type'] == $a || $b看到$_POST['info-type'] == $a是否为真或$b是否为真。

由于$b为真(它是非空字符串),if条件将始终为真。


如果$_POST['info-type']只能是all newold,那么以下内容会更优雅:

if ($_POST['info-type'] == 'all')
{
    $query = "SELECT * FROM `tld` ";
}
else // info type will be old or new
{
    $info = $_POST['info-type'];
    $query = "SELECT * FROM `tld` WHERE type = '".$info."'";
}