如果语句无论如何返回

时间:2013-11-10 05:40:11

标签: php

我有一个获取id号的PHP代码,然后检查数据库中是否存在id。如果id在数据库中,则回显Item Added如果不是,则回显That id is not valid

(至少那是应该做的!)

现在它无论如何都会回复Item Added

$action = $_GET['action'];
$id     = $_GET['id'];

if ($action == 'add') {

    // Check if the id matches one in the database 
    $result = mysqli_query($con,"SELECT COUNT(*) FROM items WHERE id='$id'");

    if ($result = 0) {

        echo 'That id is not valid!';
    }
    else {

        echo 'Item Added';
    }
}

我的获取操作的网址如下所示:

../shopping-functions.php?action=add&id=977

5 个答案:

答案 0 :(得分:4)

=是作业

==是比较。

变化:

if ($result = 0) {

if ($result == 0) {

更新

您还需要正确检索查询中的行数,例如:

$result = mysqli_query($con,"SELECT * FROM items WHERE id='$id'");
$row_cnt = mysqli_num_rows($result);
if ($row_cnt == 0) {

答案 1 :(得分:2)

正如其他人所指出的那样,您使用的是赋值运算符而不是if语句中的比较 - 即您使用=代替==。不幸的是,这不是唯一的错误。

mysqli_query返回一个MySQL资源,因此将其与0进行比较将不成立,除非查询实际失败。相反,您需要查看您获得的资源对象的实际结果数据。一个更简单的解决方案是:

if ($action == 'add') {

    // Check if the id matches one in the database 
    $result = mysqli_query($con,"SELECT id FROM items WHERE id='$id'");
    if (mysql_num_rows($result) == 0) {

        echo 'That id is not valid!';
    }
    else {

        echo 'Item Added';
    }
}

因此,不是选择具有特定ID的条目数,而是选择id本身(如果存在),然后计算您得到的结果。

在一个不相关的说明中:您的代码也可以通过MySQL注入,而您应该使用预准备语句。

答案 2 :(得分:1)

您可以使用:

$action = $_GET['action'];
$id = $_GET['id'];
if($action == 'add') {
// Check if the id matches one in the database
$result = mysqli_query($con,"SELECT COUNT(*) FROM `items` WHERE `id`='$id'");
$row = $result->fetch_row();
if($row[0] == 0) {
echo 'That id is not valid!';
}
else {
echo 'Item Added';
}
}

之前你用mysql资源检查它,这是错误的。你也使用赋值运算符(=)而不是比较运算符(==),就像每个人都说的那样。

答案 3 :(得分:0)

if ($result = 0) {

        echo 'That id is not valid!';
    }

正在分配结果,您需要使用if($result == 0)

答案 4 :(得分:0)

正如其他人所指出的,使用一个=符号赋值,而不是比较。

请参阅Comparison Operators documentation

PHP Comparison Operators