2014-05-14 125 views
0
<form action = "index.php" method = "post"> 
username : <input type = "text" name = "uname" /><br> 
password : <input type = "text" name = "pass" /><br> 
submit : <input type = "submit" name = "submit" value = "submit" /> 
</form> 

<?php 
if(isset($_SESSION['id'])){echo $_SESSION['id'];} 
if(isset($_POST['submit'])){ 
if ($_POST['submit'] == 'submit'){ 

$uname = $_POST['uname']; 
$pass = $_POST['pass']; 
$db = "davidedwardcakes"; 
$connect = mysql_connect('localhost', 'root', 'wtfiwwu'); 
$db_connect = mysql_selectdb($db, $connect); 
if(!$db_connect){echo 'no';} 

$query = "SELECT * FROM `users` WHERE uname ='$uname' AND pass = '$pass'"; 
$result = mysql_query($query, $connect); 
if(mysql_num_rows($result) > 0){//echo 'index failed'; var_dump($result);} 
while($row = mysql_fetch_array($result)){echo $row['uname'] 
. "<br>"; 

session_start(); 
echo '<a href = "test.php">peruse</a>'; 
$_SESSION['id'] = $row['id'];}} 

else{echo 'lol'; var_dump($query);}} 

每当我想登录,我得到的错误: 字符串 'SELECT * FROM用户WHERE UNAME =' 棕 '并通过= '健二''(长度= 61)mysql_num_rows()返回零

这意味着我的$查询有问​​题。如果我从$ query中删除$ pass查询,它可以正常工作,但不包括它在内。任何人都可以帮忙吗?

+0

咦?为什么这意味着查询有问题?这是你的'var_dump'代码。 – BenM

+1

这不是一个错误。这是你的'var_dump($ query);'代码。 –

+3

1.不要将密码存储为纯文本。 2.不要使用'mysql_ *'函数;他们已被弃用。 3.你的代码对SQL注入是开放的...... – BenM

回答

1

改变它

mysql_selectdb($db, $connect); 

作为

mysql_select_db($db, $connect); 
+0

根据您的代码连接不创建,因此没有查询运行 – wild

+0

为什么?如果他的数据库连接不起作用,他会得到'no':'if(!$ db_connect){echo'no';} – BenM

+0

@BenM:你会尝试我认为你将得不到:声明。根据我的知识 – wild

0

有一个在语法

$result = mysql_select($query, $connect); 

代替上面的代码一个错误与此代码

$result = mysql_select_db($query, $connect); 
替换
1

查询没有任何问题,但是您的错误报告存在问题。例如,下面一行:

if(mysql_num_rows($result) > 0){//echo 'index failed'; var_dump($result);} 

将在SQL查询返回至少1排转储$result变量。也许你想用的是:

if(mysql_num_rows($result) < 1) { echo 'index failed'; var_dump($result); } 

此外,谨慎的一些注意事项:

  1. 不要密码保存为纯文本。 http://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/
  2. 请勿使用mysql_*函数;他们已被弃用。看看PDOMySQLi
  3. 您的代码可以打开至SQL injection
0

如果在你的语法一定的误差, 尝试使用

mysql_num_rows($result) or die('Could not Show result: ' . mysql_error());