2013-04-30 80 views
2

我有这个作为我的PHP代码:为什么这个PHP MySQL查询不起作用?

$username=($_POST['username']); 
$password=($_POST['password']); 
$query="SELECT * from 'User' WHERE 'Username'='$username'"; 
mysql_query($query); 

if($rows==0) 
{ 
echo"<p> No rows found</p>"; 
} 

else 
{ 

while($row=mysql_fetch_array($query)) 
{ 
echo"rows found"; 
} 

} 
mysql_close($conn); 

而且我的状态代码如下所示:

<form name="login" action="mydamhlogin.php" method="POST"> 
<p>Username:<input type="text" name="username"></p> 
<p>Password<input type="password" name="password"></p> 
<p><input type="submit" value="Login"></p> 
</form> 

我的数据库列名为用户名和我试图选择匹配$的行从表单中提取的用户名,但它总是返回没有行,但行肯定在数据库中。

+0

没有更多的'mysql_'功能请,改为使用'mysqli_''或PDO。 – akluth 2013-04-30 11:19:35

+1

你知道鲍比桌吗? http://bobby-tables.com/de_DE/ – 2013-04-30 11:21:26

+0

到目前为止,您的代码和*所有*答案都包含SQL注入漏洞。 @ThorstenDittmar:你为什么链接到bobby-tables.com的德语翻译? – 2013-04-30 11:24:51

回答

9

您正在使用错误的转义字符单qoutes使用反引号操作符,而不是像这样

$query="SELECT * from `User` WHERE `Username`='$username'"; 
$result = mysql_query($query); 

而且$行是空在这里,你需要做到这一点

$rows = mysql_num_rows($result); 

然后用这个$行变量检查它的价值。

+0

你的意思是'$ result = mysql_query($ query);'then'$ rows = mysql_num_rows($ result);'$ query包含SQL语句 – Waygood 2013-04-30 11:21:15

+0

echo_me是一个快速更新/复印机 – Waygood 2013-04-30 11:22:45

+0

啊,完美。谢谢你的朋友:) – Scott 2013-04-30 11:26:00

3

使用本

$query="SELECT * from `User` WHERE `Username`='$username'"; 

你不应该使用周围表和列单引号,但反引号

也是此行

 if($rows==0) 

前,可添加此

$rows = mysql_num_rows(mysql_query($query)); 

DIT:

改变这种

while($row=mysql_fetch_array(mysql_query($query))) 
    { 
    echo $row['username']; // this if you want output username , if you want something else just write column name 
    } 

EDIT2。

这是你的代码

$username=($_POST['username']); 
    $password=($_POST['password']); 
    $query=mysql_query("SELECT * from `User` WHERE `Username`='$username'"); 
    $rows = mysql_num_rows($query); 
    if($rows==0) 
    { 
    echo"<p> No rows found</p>"; 
} 

else 
{ 

while($row=mysql_fetch_array($query)) 
{ 
echo $row['username']; 
} 

} 
mysql_close($conn); 
+0

仍然没有返回行。我的表格绝对称为用户,我确保输入的用户名存在于表格中,但它仍然不会返回任何东西 – Scott 2013-04-30 11:22:44

+0

那是因为echo_me更新了他们对chandesh_cools的回答,但没有用下一次更正重新更新 – Waygood 2013-04-30 11:23:44

+0

编辑我的答案还需要更改最后一个 – 2013-04-30 11:24:19

-1

使用此,

$query="SELECT * from User WHERE `Username`='".$username."'"; 
0

在这里,你已经错过了很多问题,如$行是没有任何价值和$查询字符串。 我已经修改了它使用:

$username=($_POST['username']); 
$password=($_POST['password']); 
$query="SELECT * from `User` WHERE `Username`='".$username."'"; 
$exeQuery = mysql_query($query); 
$rows = mysql_num_rows($exeQuery) 
if($rows==0) 
{ 
echo"<p> No rows found</p>"; 
} else { 

while($row=mysql_fetch_array($exeQuery)) 
{ 
echo"rows found"; 
} 

} 
-1

查询的语法是错误的尝试这个

$query="SELECT * from User WHERE `Username`='".$username."'"; 
0
$query="SELECT * from User WHERE Username='$username'"; 
$result=mysql_query($query); 

if($result===false) //instead of $rows 
... 

编辑:

if(($result) && (mysql_num_rows($result)>0))//instead of $rows 
... 
+0

查询成功执行,没有结果是两个不同的事情'if(($ result)&&(mysql_num_rows($ result)> 0))' – Waygood 2013-04-30 11:29:51

+0

@Waygood,正确,谢谢 – Amir 2013-04-30 11:30:59