2011-11-28 162 views
0

我試圖運行此代碼創建一個簡單的登錄表單,並連接到數據庫,我的代碼的時候是錯誤在PHP連接數據庫

<?php 
$avaialableuser=$_POST["username"]; 
$avaialablepass=$_POST["password"]; 
$login = mysql_connect("localhost","ahmed",""); 
if (!$login) 
    { 
    die('Could not connect: ' . mysql_error()); 
    } 
mysql_select_db("login module",$login); 
$result= mysql_query("SELECT * FROM people"); 
while($row = mysql_fetch_array($result)) 
    { 
    if(($row['username']==$avaialableuser) && ($row['password']==$avaialablepass)){ 
echo "WELCOME"; 
} 

else 
echo "sorry your username or password entered is incorrect please try again"; 
} 
mysql_close($login); 
?> 
> 

我不斷獲取此錯誤[下午9時03分25秒] ahmed atwa:警告:mysql_fetch_array()期望參數1是資源,布爾在第11行給出C:\ xampp \ htdocs \ example \ login.php

任何人都可以請告訴我我做錯了什麼? 謝謝

+0

查詢失敗出於某種原因,這意味着$結果不是資源。好的做法是檢查你的mysql_query是否成功。 – Julien

+0

你必須寫你的mysql表 – misima

+0

你可以使用這個代碼...$ result = mysql_query(「SELECT * FROM people」)或die(mysql_error()); – misima

回答

1

您與MySQL服務器的連接不成功。由於您檢查了$login的值,因此我們可以假設mysql_select_db()語句失敗或者查詢不起作用。請檢查您的數據庫名稱,然後重試。

爲避免將來出現此類問題,請檢查返回值mysql_select_db()mysql_query()

+0

還是失敗某些其他原因查詢(即表不存在) – nickb

+0

@nickb:是的,這是可能的,我更新了我的答案,以反映它。但是,在這種情況下,數據庫名稱(「登錄模塊」)可能是問題。 –

1

根據manualmysql_query返回false如果由於某種原因查詢失敗。

兩種最常見的原因是:

  1. 查詢本身是不正確
  2. 您不必執行查詢的權限。

要縮小範圍,應該儘可能引入錯誤檢查,並在需要時放棄。在您的例子中,你有兩種可能的情況是錯誤出現能夠:

  1. mysql_select_db("login module",$login);
  2. $result= mysql_query("SELECT * FROM people");

雙方的這兩種情況,如果失敗返回false。

編輯:
在這種情況下,問題是,你使用你的數據庫名稱的空間。爲了使它工作,你必須用括號[]附上名稱:

mysql_select_db("[login module]",$login); 
1

我不知道如果這是真的,但我認爲,你不能在DB-名稱中使用空間: 未能進行你的數據庫名稱是「login_module」?

mysql_select_db("login module",$login);

€DIT:你必須支付你的DB-名稱中括號:

mysql_select_db("[login module]",$login);

+0

您可以在名稱中使用空格,但必須附上它們。看到我的答案。 – Marcus

+0

哦,那就對了:)謝謝... – ninov