我正在开发一个android应用程序,我已经将我的应用程序连接到云服务器。现在我想从服务器的登录数据库users表中删除一个特定的用户。输入来自应用程序。输入是电子邮件id。
我所面临的问题是,即使数据库中的数据不存在,我也总是得到真实的结果。
示例:如果有电子邮件id“example@email.com在数据库中,如果给定的输入是example@email.com,查询结果为true。
如果输入电子邮件是“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);
?>
3条答案
按热度按时间weylhg0b1#
写条件的方式很正常,你总是会得到一个真值,因为它不执行查询,只是检查查询是否可执行。你需要使用
mysql_affected_rows or $mysqli->affected_rows
看看行是否真的受到影响。1u4esq0p2#
$conn->query($sql)
将为true,除非执行查询时出错。如果您想知道有多少行受到影响,您需要使用mysql\u-affected\u-rows函数。请注意这一行:
允许sql注入攻击。查看准备好的陈述。
ia2d9nvy3#
查询函数返回 假 一旦失败。为了成功 选择、展示、描述 或 解释 查询 mysqli\u查询() 将返回一个 mysqli\u结果 对象。对于其他成功的查询 mysqli\u查询() 会回来的 是的。
你可以用
查找删除的行数,然后确定是否实际删除了行