我的代码是
$query = "USE `davidedwardcakes`";
$result = mysql_query($query, $connect);
if(!isset($result)){echo 'no' . mysql_error();}
$query = "SELECT * FROM `users` WHERE uname = '$uname'";
$result2 = mysql_query($query, $connect);
if(!$result2){echo 'wrong username or password' . mysql_error(); var_dump($result2);}
while($row = mysql_fetch_array($result2))
{echo $row['uname'] . $row['pass']; var_dump($result2);}
echo 'submited';
我正在尝试创建一个登录表单,但每当我使用空白表单执行它时,我都不会收到任何错误输出。请帮助。
答案 0 :(得分:0)
让我首先将您的代码转换为至少MySQLi而不是弃用的MySQL。
<?php
/* ESTABLISH CONNECTION */
$connect=mysqli_connect("YourHost","YourUsername","YourPassword","yourDatabase"); /* REPLACE THE NECESSARY DATA INSIDE */
if(mysqli_connect_errno()){
echo "Error".mysqli_connect_error();
}
/* $query = "USE `davidedwardcakes`";
$result = mysql_query($query, $connect);
if(!isset($result)){echo 'no' . mysql_error();}
HIDE THIS FIRST, WHAT'S THE PURPOSE OF THIS CODE? */
*/
$uname=mysqli_real_escape_string($connect,$_POST['uname']); /* REPLACE THE NECESSARY POST DATA */
$query = "SELECT * FROM `users` WHERE uname = '$uname'"; /* ADD ALSO HERE THE PASSWORD */
$result2 = mysqli_query($connect,$query);
if(mysqli_num_rows($result2)==0){ /* IF MATCHES FOUND NONE, ERROR */
echo "Wrong username or password";
var_dump($result2);
} /* END OF IF RESULT2 IS O */
else {
while($row = mysqli_fetch_array($result2)){
echo $row['uname'] . $row['pass'];
} /* END OF WHILE LOOP */
echo 'submited';
var_dump($result2);
} /* END OF ELSE */
?>
答案 1 :(得分:0)
这是因为如果$uname
是空字符串,查询仍会成功运行。它只有一个零行结果集。因此,您可以这样做:
if(!$result2){echo 'wrong username or password' . mysql_error(); var_dump($result2);}
$result2
将具有真值,并且条件中的代码将不会执行。
您应该检查mysql_num_rows()
以确定您是否有非空的结果集。
顺便说一下,没有理由运行实际mysql_query()
来选择要使用的数据库。 mysql_select_db()
可用于此目的。
话虽如此,您应该使用mysqli
或PDO
代替mysql
。