2014-05-13 60 views
0

我的代码是错误登录表单不输出

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

我试图创建一个登录形式,但每当我与空白表格执行它,我没有得到任何错误输出。请帮助。

+3

尝试使用'mysql_num_rows()'而不是'if(!$ result2)' –

+0

'var_dump($ result2)'显示什么? –

+0

@john,var-dump显示空白,如果我离开这两个uname并传递空白 –

回答

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 */ 

?> 
0

这是因为如果$uname是一个空字符串,查询仍然会成功运行。它只会有一个零行结果集。因此,当你这样做:

if(!$result2){echo 'wrong username or password' . mysql_error(); var_dump($result2);} 

$result2将有truthy值,并在有条件的代码将不会执行。

您应该检查mysql_num_rows()以确定您是否有非空结果集。

顺便说一下,没有理由运行实际的mysql_query()来选择要使用的数据库。 mysql_select_db()可用于此目的。

这就是说,你应该使用mysqliPDO而不是mysql