我在与服务器中的数据库连接的android应用程序中工作
我需要检查用户名和密码登录
如果在用户找到的数据库中找到用户名和密码
我在表日志中添加了用户名和密码,但代码的结果是
$name = $_POST["user_name"];
$password = $_POST["password"];
$result = mysql_query("SELECT user_name,password from login WHERE user_name = '$name' AND password = '$password'");
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows == 1) {
$json = array("result"=>"yes");
} else {
$json = array("result"=>"no");
}
header('Content-Type: application/json');
echo json_encode($json)
我添加了表登录用户名和密码,但如果建立了用户名和密码,则代码结果为否
这段代码有什么问题?
答案 0 :(得分:0)
这可能是由于以下几个原因造成的:
mysql_query
返回错误。我建议用以下方法检查返回的结果:
if ($result === FALSE)
echo "I have an error in my MySQL sentence\n";
这不是强制性的,但我不知道你是否有多个已打开的MySQL套接字。这就是为什么指定mysql_query
函数的链接ID总是一个好主意,例如:
$mylink = mysql_connect($host, $login, $password);
$result = mysql_query("SELECT ...", $mylink);
在您的代码中手动测试您正在测试的句子总是一个好主意。所以我放echo "SELECT user_name,password from login WHERE user_name = '$name' AND password = '$password'\n";
,然后复制它,手动连接到MySQL服务器并执行它,看它是否返回任何东西(如果它返回一些东西,这意味着错误在代码中)。
这不是调试提示,但我建议始终加密数据库中的密码。因此,当您在数据库中插入登录时,不要插入('$user', '$pass')
,而是更好地插入('$user', MD5('$pass'))
,以获得更好的安全性。对于SELECT
,它是相同的:SELECT * FROM table WHERE login = '$user' AND pass = MD5('$pass')
。
希望这有帮助!