2015-01-04 69 views
-2

這是我在這個社區的第一篇文章。我是PHP和MySQL的新手。這是我試圖運行的代碼。PhP的MySQL - 如何顯示數據庫中的記錄?

我正在使用MAMP。我測試了我能夠建立與「寵物」數據庫的連接。檢查了我的用戶名和密碼,這也是正確的。我在數據庫中有「petType」字段中的「horse」數據。

下面的代碼中有一些錯誤。我抓了我的腦袋,看了書和網上,但無法弄清楚我做錯了什麼?使用下面的代碼,我的網頁空白。

我試圖顯示數據庫中的記錄作爲第一部分,並擔心後面的格式。


<?php 

$host = 'localhost'; 
$username = ' '; 
$password = ' '; 
$database = 'pet'; 

$conn = mysqli_connect($host, $username, $password, $database); 

$query= "SELECT * FROM pet WHERE petType = 'horse'"; 

while($row = mysqli_fetch_array($query)): 
{ 
$petDescription = $query [$petDescription]; 
$petName = $query [$petName]; 
$petType = $query [$petType]; 

echo "$petType <br> <br> $petName <br> $petDescription"; 

} 

?> 
+0

你只在'$ query'中有一個字符串。在任何時候你都不會執行那個針對你的數據庫的查詢。 – deceze

+0

你不是在查詢。在這裏,請閱讀http://php.net/manual/en/mysqli.query.php –

+1

另外,* ahem *是'$ petDescription = $ query [$ petDescription]; $ petName = $ query [$ petName]; $ petType = $ query [$ petType];'? –

回答

3

好吧,這裏的破敗。

  • 你不是在查詢。這意味着您需要使用mysqli_query()函數,該函數需要成功DB connection建立並通過作爲第一個參數。

  • 然後你在while循環分配$row獲取數組,但你使用$query作爲其替代品的預期行進行回顯。它應該是$row而不是$query

(編輯),您也可以在while($row = mysqli_fetch_array($query)): <冒號=刪除。

現在很難確定你的表中實際的列名是什麼,所以我現在只用普通的column_x,column_ycolumn_z來代替它們。

您可以用那些在您的表中替換那些。更多這一點在下面。

用以下替換您當前的代碼塊:

$petType = $row['petType']; 
$petName = $row['petName']; 
$petDescription = $row['petDescription']; 

$query = mysqli_query($conn, "SELECT * FROM pet WHERE petType = 'horse'"); 

    while($row = mysqli_fetch_array($query)) 
    { 
     $petType = $row['column_x']; 
     $petName = $row['column_y']; 
     $petDescription = $row['column_z']; 

     echo "$petType <br> <br> $petName <br> $petDescription"; 

    } 

如果你的其他各列確實叫petTypepetNamepetDescription,那麼你就可以代替上面它的工作方式是這樣的,我會以圖形方式向您展示:

$petType = $row['petType']; 
    ^ ^ ^
    |  |  | column name in table 
    |  | 
    |  | variable in loop 
    | 
    | variable to echo 

但是,有些東西似乎有點不清楚,並且您的數據庫和表格都保留着相同的名稱pet

確保事實確實如此。

or die(mysqli_error($conn))加到mysqli_query()

旁註:錯誤報告只能在分期中完成,而不能生成。


腳註:

+0

嘿,你們真棒。我嘗試了你給我的建議,代碼不起作用。我的數據庫和表都是「寵物」,字段如下所示。新代碼 - $ host ='localhost'; $ username =''; $ password =''; $ database ='pet'; $ conn = mysqli_connect($ host,$ username,$ password,$ database); $ query = mysqli_query($ conn,「SELECT * FROM pet WHERE petType ='horse'」); while($ row = mysqli_fetch_array($ query)):{ $ petType = $ row ['$ petType']; $ petName = $ row ['$ petName']; $ petDescription = $ row ['petDescription'];回聲「$ petType

$ petName
$ petDescription」; } <? – divinelotus

+0

@divinelotus不客氣。但您需要定義「不工作」。再次仔細檢查我的整個答案。 –

+0

@divinelotus你的代碼的最後一部分讀爲
$ petName
$ petDescription 「;} <'應該讀爲
$ petName
$ petDescription?」;我注意到'while($ row = mysqli_fetch_array($ query))中的一個冒號:''不應該在那裏''注意'<?'應該是'?>' –

相關問題