2017-05-30 80 views
-2

伙计!我遇到了我的MySQL数据库问题。当我尝试访问这些字段时,它不会返回确切的值。这是代码。MySQL查询结果给出错误的值

<?php 
 
    $host = "localhost"; 
 
\t $user = "******"; 
 
\t $pass = "******"; 
 
\t $db = mysql_connect($host, $user, $pass) or die("Unable to connect. Check your connection parameters."); 
 
\t mysql_select_db("*****") or die("Unable to select database!"); 
 
    $form_username=$_POST["username"]; 
 
\t $form_password=$_POST["password"]; 
 
\t $query=" 
 
\t \t SELECT username, password FROM users 
 
\t "; 
 
\t $result=mysql_query($query,$db) or die("Unable to send the query".mysql_error()); 
 
\t $index=0; 
 
\t while($row=mysql_fetch_row($result)) 
 
\t { 
 
\t \t $username[$index]=row[0]; 
 
\t \t $password[$index]=row[1]; 
 
\t \t $index++; 
 
\t } 
 
\t 
 
\t for($i=0; $i<=$index; $i++) 
 
\t { 
 
\t \t if($form_username==$username[$i]&& $form_password==$password[$i]) 
 
\t \t { 
 
\t \t \t session_start(); 
 
\t \t \t $_SESSION["login"]="OK"; 
 
\t \t \t header("Location: ************"); 
 
\t \t \t die(); 
 
\t \t } 
 
\t }

运营商内部的如果语句返回每一个给定值false。当我呼应这样每一个用户名和密码:

echo $form_username." ".$username[0]." ".$form_password." ".$password[0]."<br>"; 
 
\t echo $form_username." ".$username[1]." ".$form_password." ".$password[1]."<br>"; 
 
\t echo $form_username." ".$username[2]." ".$form_password." ".$password[2]."<br>";

呼应我:

管理[R 12345Ø

管理[R 12345Ø

admin r 12345

我真的不知道问题出在哪里。 我会非常感谢你的帮助。

+1

mysql_ *函数已弃用,请使用PDO或MySQLi。您以明文形式存储密码,他们需要安全散列。我相信,如果有机会,你也会受到SQL注入的攻击,所以请仔细查看。 – Enstage

+0

你应该得到一个'未定义的行常量'的错误 –

回答

2

应将该位:

while($row=mysql_fetch_row($result)) 
{ 
    $username[$index]=row[0]; 
    $password[$index]=row[1]; 
    $index++; 
} 

阅读:

在变量名
while($row=mysql_fetch_row($result)) 
{ 
    $username[$index] = $row[0]; 
    $password[$index] = $row[1]; 
    $index++; 
} 

注意失踪$。

+1

这是正确的答案,在第一个例子中,PHP将'row'视为一个字符串,因此row [0]返回第一个字符'r'。因此OP的'admin r 12345 o'输出。有趣的是,至少可以说。 – Enstage

+1

heh很好破译@Enstage。我没有意识到这就是为什么它有这样的输出,我只是很快扫描了一些明显的问题。作为使用大量不同语言的人,我经常犯这样的错误,所以这是我首先要找的。我倾向于使用更多空白的代码格式来使阅读更容易。 –

+0

非常感谢你们,我之前没有得到任何错误或警告,但现在,当纠正时,它的工作。当我意识到我犯了什么愚蠢的错误时,我非常生气。 – zumbata