错误没有以登录形式输出

时间:2014-05-13 23:39:43

标签: php mysql

我的代码是

$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';

我正在尝试创建一个登录表单,但每当我使用空白表单执行它时,我都不会收到任何错误输出。请帮助。

2 个答案:

答案 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()可用于此目的。

话虽如此,您应该使用mysqliPDO代替mysql