使用删除查询时,始终为TRUE会导致PHP代码

时间:2018-04-15 19:04:44

标签: php mysql mysqli

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

我面临的问题是,即使数据库中的数据不存在,我总是将结果视为真。

示例:如果有电子邮件ID" example@email.com"在数据库中,如果给出的输入是" example@email.com" ;,则查询结果为真 如果输入的电子邮件是" no@email.com"这在数据库中不存在,结果总是如此......

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

data

3 个答案:

答案 0 :(得分:1)

除非执行查询时出错,否则

$conn->query($sql)将为true。如果您想知道受影响的行数,则需要使用mysql_affected_rows函数。

注意这一行:

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

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

答案 1 :(得分:0)

查询函数失败时返回FALSE。对于成功的SELECT,SHOW,DESCRIBE或EXPLAIN查询,mysqli_query()将返回一个mysqli_result对象。对于其他成功的查询,mysqli_query()将返回TRUE。

您可以使用

   $mysqli->affected_rows

查找已删除的行数,然后确定是否实际删除了行

答案 2 :(得分:0)

条件写入的方式正常,您将始终获得TRUE值,因为它不会执行查询,只检查查询是否可执行。 你需要使用 mysql_affected_rows or $mysqli->affected_rows 看看这行是否真的受到影响。