2013-04-30 78 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