Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
使用delete查询时,PHP代码中的结果始终为TRUE_Php_Mysql_Mysqli - Fatal编程技术网

使用delete查询时,PHP代码中的结果始终为TRUE

使用delete查询时,PHP代码中的结果始终为TRUE,php,mysql,mysqli,Php,Mysql,Mysqli,我正在开发一个Android应用程序,我已经将我的应用程序连接到云服务器。现在我想从登录数据库中删除一个特定的用户,即服务器中的users表。输入来自应用程序。输入是电子邮件id 我所面临的问题是,即使数据库中的数据不存在,我也总是得到真实的结果 示例:如果有电子邮件id“example@email.com在数据库中,如果给定的输入为example@email.com,则查询结果为真。 如果输入电子邮件为“no@email.com“这在数据库中不存在,结果总是正确的 下面是我与数据库以及Sndr

我正在开发一个Android应用程序,我已经将我的应用程序连接到云服务器。现在我想从登录数据库中删除一个特定的用户,即服务器中的users表。输入来自应用程序。输入是电子邮件id

我所面临的问题是,即使数据库中的数据不存在,我也总是得到真实的结果

示例:如果有电子邮件id“example@email.com在数据库中,如果给定的输入为example@email.com,则查询结果为真。
如果输入电子邮件为“no@email.com“这在数据库中不存在,结果总是正确的

下面是我与数据库以及Sndroid应用程序通信的PHP代码

<?php
    $email = $_GET['email'];

    $servername = "localhost";
    $usernamedb = "root";
    $passworddb = "smartlock";
    $dbname = "login";
    $conn = mysqli_connect($servername,$usernamedb,$passworddb,$dbname);
    $sql = "DELETE   FROM  `users` WHERE (`email`='".$email."')";

    if ($conn->query($sql) === TRUE)  {
        $response = array('message'=>'success');
        echo json_encode($response);
    } 
    else {
        $response = array('message'=>'wrong');
        echo json_encode($response);
    }

    mysqli_close($conn);
?>

查询函数失败时返回FALSE。为了成功地选择、显示、描述或解释查询,mysqli_query()将返回一个mysqli_结果对象。对于其他成功的查询,mysqli_query()将返回TRUE

你可以用

   $mysqli->affected_rows
若要查找已删除的行数,然后确定行是否已实际删除,

$conn->query($sql)
将为true,除非执行查询时出错。如果您想知道有多少行受到影响,则需要使用该函数

请注意,这一行:

$sql = "DELETE   FROM  `users` WHERE (`email`='".$email."')";

将允许SQL注入攻击。查看。

编写条件的方式很正常,您总是会得到一个真值,因为它不执行查询,只检查查询是否可执行。 你需要使用
mysql\u受影响的行或$mysqli->受影响的行
查看行是否确实受到影响