2012-11-24 20 views
0

我正在使用PHP訪問MYSQL數據庫,我需要從表中提取數據。問題是隻有一個字段被提取。MYSQL中的單個字段的PHP

$mysqli = new mysqli($hostname, $username, $password, $db_name); 

     // Output error info if there was a connection problem 
     if ($mysqli->connect_errno) 
      die("Failed to connect to MySQL: ($mysqli->connect_errno) $mysqli->connect_error"); 

     $db = "SELECT username1 FROM Friends WHERE username2 = '"."$username"."' UNION SELECT username2 FROM Friends WHERE username1 = '"."$username"."'"; 

     $result = $mysqli->query($db) or 
      die ("Wasn't able to search the database"); 

     while($result->fetch_field($row)) 
     { 
      echo "<h1> $row </h1>"; 
     } 

我保證我已連接到我的數據庫。我還在括號中使用了$ result-> fetch_field()而不是$ row。我的主要問題是fetch_field返回一個對象,但在PHP的所有手冊中,他們沒有說明如何提取該字段的實際值。

+0

我知道這可能是非常基本的,我已經錯過了很明顯,但我只是不能得到它的工作。我也試過fetch_row(),它也不起作用。 – Jonathan

回答

1

你確定你的查詢中的變量$username是你期望的嗎?您的SELECT可能會返回0行。您的代碼中使用了兩次$username
首先在你的mysqli -

$mysqli = new mysqli($hostname, $username, $password, $db_name); 
           --------- 

而且又在你的SELECT -

$db = "SELECT username1 FROM Friends WHERE username2 = '"."$username"."' UNION SELECT username2 FROM Friends WHERE username1 = '"."$username"."'"; 
                  ---------                --------- 

嘗試增加

if ($result->num_rows > 0){ 
    while ($row = $result->fetch_row()) { 
    echo "<h1>".$row[0]."</h1>";} 
} 
else {echo "No Query/Returned 0 Rows";} 
+1

這是問題,肖恩。這是$ username重新分配的錯誤位置。它使我希望PHP有變量聲明。非常感謝你!對於那些好奇的我用while($ row = $ result-> fetch_row()){echo「

$ row [0]

」; }它給了我正確的輸出。 – Jonathan

+0

我剛看到if語句!這將是一個好主意,以避免像這樣的未來問題。 – Jonathan

+0

我開始使用這種'if'語句作爲調試腳本的簡單方法,因爲它讓我知道連接是好的,但是我的查詢是錯誤的,或者沒有行匹配條件。 – Sean

0
while ($obj = $result->fetch_object()) { 
    echo "<h1>".$obj->username1."</h1>"; 
} 

*的mysqli_fetch_object()將返回當前行的結果設置爲對象,其中對象的屬性代表該結果集內發現的字段的名稱。*

這是一個有點瘋了,沒有一個fetch_value($表,$列,其中$)函數

+0

這不會給我任何錯誤,這太棒了!但是我沒有得到任何輸出,這是令人傷心的。大聲笑。我知道!這太奇怪了,你不能只取得價值,並且以你的歡快的方式。 – Jonathan

0

嘗試獲取從結果數組,像這樣:

while($row = fetch_assoc($result)) 
    { 
     echo "<h1> $row['username1'].''.$row['username2'] </h1>"; 
    } 

我假設所有的R ecords同時擁有username1和username2 NOT NULL並且並排顯示它們(例如名字和姓氏)。

+0

我收到此錯誤:解析錯誤:語法錯誤,意外的T_ENCAPSED_AND_WHITESPACE,期望T_STRING或T_VARIABLE或T_NUM_STRING。 我猜這意味着$ row ['username1']沒有被定義。 – Jonathan

+0

是的,請參閱編輯。這是因爲我使用的是fetch_array而不是fetch_assoc,所以期望使用數字索引而不是聯想索引。 – mastazi

+0

也是,我們爲什麼要傳遞$ row?試試只用fetch_assoc($ result)。 – mastazi