PHP MySQL INSERT Query 和 PHP 似乎运行了两次


PHP MySQL INSERT Query & PHP seems to be run twice

我想为安卓制作简单的登录服务器。

登录功能运行良好,但在注册中存在一些问题。

我的意图是:

  1. Android 客户端使用 HTTPPOST 将用户信息(ID、用户名、密码)发送到 XAMPP Server。

  2. 服务器获取用户信息,并从数据库中查找重复ID或用户名(使用选择查询)。 如果存在重复,则使用 echo 响应客户端。

  3. 如果不存在重复,请使用插入查询将新用户信息添加到数据库。并使用回声响应客户端。

如果存在重复,则效果很好。 服务器响应正确。

但是在没有重复的情况下,查询的输出为 1,然后服务器响应"有重复"......

login.php 与 register.php 是相同的代码,但在 login.php 中没有插入查询,并且运行良好。

所以我认为这个问题是由插入查询引起的。

这是我的代码:

<?php
$hostname_localhost ="localhost";
$database_localhost ="mydatabase";
$username_localhost ="root";
$password_localhost ="";
$id_localhost ="";
$localhost = mysql_connect($hostname_localhost,$username_localhost,$password_localhost, $id_localhost) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_localhost, $localhost);
$username = $_POST['username'];
$password = $_POST['password'];
$id = $_POST['id'];
$query_search = "select * from tbl_user where username = '".$username."' OR id = '".$id."'";
$query_exec = mysql_query($query_search) or die(mysql_error());
$rows = mysql_num_rows($query_exec);
if($rows == 0) { 
    $query_register = "INSERT INTO tbl_user (id, username, password) VALUES ('$id', '$username', '$password')";
    $result = mysql_query($query_register) or die(mysql_error());
    if($result == TRUE){
        echo "Register Success";
    } else {
        echo "Register Fail";
    }
    exit;
    die;
} else {
    echo "Registered Device or Username";
    exit;
}
?>

登录.php几乎相同。 只有搜索查询(选择ID和用户名和密码相同)和插入查询不同(登录中没有插入.php)。

服务器响应错误,但插入操作正确。我可以在我的数据库中看到新记录。所以。。。它似乎运行了两次。

客户端没有问题,因为它也与登录代码几乎相同(并且登录在没有插入查询的情况下工作得很好:))。

更新

mysql_num_rows返回一个 int,您正在检查 $rows 是否为 false 而不是 0。使用=== .


您在tbl_user中指的是什么id,为什么用户会提供他们的 ID?您确定您正在检查正确的id吗?感觉您应该对设备 ID 进行单独的查询或检查表tbl_user中的device_id列。

其他需要研究的事项

exit;die;是一样的,所以叫两次是没有意义的。

if ($rows == 0)正在检查(bool) false而不是整数0。使用===检查提供的类型。

使用 " 双引号时,可以直接提供变量;例如 "...WHERE username = '$username'"而不是"... WHERE username = '".$username."'".

考虑使用mysqli而不是mysql来获得更多功能和提高安全性;http://php.net/manual/en/book.mysqli.php