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