2014-01-06 82 views
-1

我對PHP很新,我意識到我有很多東西需要學習,特別是關於SQL注入攻擊和新的php 5.5的東西。從列中返回結果到數組

但是,雖然我正在學習,我嘗試玩一下,實驗,我遇到了一個問題。我需要將我的查詢的一列(team_name)的所有結果放入一個數組(零索引會更容易),以便我可以將這些結果放入foreach循環中以創建一個夾具列表。例如 - 這是我願意做的數據...

foreach ($teams as $team) { 
    foreach ($teams as $opposition) { 
     if ($team != $opposition) { 
      echo "$team versus $opposition"; 
     } 
    } 
} 

所以我的SQL查詢如下什麼...

$query="select * from pool_a"; 
$result=mysql_query($query); 
$num=mysql_num_rows($result); 

然後,我可以很容易地將數據輸出我尋找如下;

echo "<table>"; 
for ($i=0;$i<$num;$i++) { 
    $teams=mysql_result($result,$i,'team_name'); 
     echo "<tr><td>$teams</tr>"; 
} 
echo "</table>"; 

但我不能做的是將數據獲取到數組中。我認爲從上面的msql_query返回的數據總是以數組形式返回,無論結果的數量如何,但是如果我在$ teams上運行is_array()檢查,它將返回false。

我已經嘗試過使用爆炸(在每個團隊名稱後面添加逗號並修剪最後一個關閉之後),然後使用foreach循環但它只返回與索引[0]關聯的值。我應該在這裏補充一點,儘管關鍵字是0,但我得到的實際值是列表中的最後一個,如上所述,我也不明白。

任何幫助將不勝感激。

感謝

+0

$ result_array = mysql_fetch_array($ result); – raygo

+0

是否會在現有查詢下替換某些內容或添加的代碼行?謝謝 – DJC

+0

使用'mysql_ *'函數是非常不鼓勵的。您應該儘快開始使用MySQLi或PDO進行與數據庫相關的任務。 – Aborted

回答

3
$team_names = array(); 
while ($row = mysql_fetch_assoc($result)) { 
    $team_names[] = $row['team_name']; 
} 

mysql_fetch_assocmysql_fetch_rowmysql_fetch_array都返回一行作爲數組(他們它是如何索引的不同)。但是mysql_result只是返回結果中的單個項目,所以它不返回數組。

你可以做同樣的事情與上面的使用mysql_result,但你仍必須將它們推到結果數組自己:

for ($i=0;$i<$num;$i++) { 
    $team=mysql_result($result,$i,'team_name'); 
    $team_names[] = $team; 
} 
0

而不是使用mysql_result嘗試使用mysql_fetch_array($結果,MYSQL_ASSOC )

這個函數會給你一個數組,不管你的結果是MySQL。

+0

但它返回一行,而不是一列。正如我的回答所顯示的,他仍然需要將他們收集到一個陣列中。 – Barmar

1

要得到查詢結果到一個數組,你可以這樣做

$query="select * from pool_a"; 
$result=mysql_query($query); 
$result_arr = mysql_fetch_array($result); 
$num=mysql_num_rows($result); 

但是,考慮使用PDO驅動程序連接到數據庫。它遠遠優於程序化,並且它更安全,因爲「預備狀態」將有助於保護您免受注入攻擊。您正在使用的方法已被棄用。

+0

謝謝你。閱讀或瞭解PDO驅動程序和準備報表的最佳位置在哪裏?我認爲我的書有點過時了! – DJC

+0

網上有很多資源只是Google搜索而已。不過,我會在這裏有點偏見,並建議你去一個體面的框架。 我推薦Laravel。它的入門門檻低,是一個很棒的社區,它是GitHub上最受歡迎的PHP項目(它只有3年曆史)。文檔很好,你可以從代碼中學到很多東西。許多人也寫過這方面的書。我不建議你堅持Laravel,但是作爲一名PHP開發人員來說,這是一個很好的起點。 – thefuzzy0ne