2011-09-17 139 views
-2

好吧,我有點卡在真正愚蠢的問題上,但仍然無法弄清楚。從數組中獲取數據 - PHP

我從數據庫中獲取數組,mysql_fetch_array。到目前爲止,我只有1條記錄在表中的print_r(......)後,我有這樣的:

Array (
    [0] => 1 
    [customer_id] => 1 
    [1] => Test Client 
    [customer_name] => Test Client 
    [2] => 
    [customer_image] => 
    [3] => Test Address 
    [customer_address] => Test Address 
    [4] => 2272723 
    [customer_phone] => 2272723 
) 

我試圖讓從那裏我會得到CUSTOMER_ID和CUSTOMER_NAME

一個 foreach() {...}

以某種方式,我不能讓正確的foreach讓他們,我得到一些搞笑的結果...

任何想法?

=================

$sql = "SELECT * FROM customers"; 
$result_set = mysql_query($sql, $this->connection); 
$records = mysql_fetch_array($result_set); 

function generateSelect($recordName, $label, $default) { 
     $records = parent::selectTableRecord($recordName); 
     $html = "<label for=\"".$recordName."\">". $label ."</label>"; 
     $html .= "<select name=\"". $recordName ."\" id=\"". $recordName ."\">"; 
     $html .= "<option value=\"\">". $default ."</option>"; 
      while ($record = mysql_fetch_assoc($records)) { 
      $html .= "<option value=\"".$record['customer_id']."\">".$record['customer_name']."</option>"; 
      } 
     $html .= "</select>"; 
     return $html; 
    } 

和其他地方頁面上,我與此相呼應的功能:

<?php echo Project::generateSelect('customer', 'client', '--'); ?> 

這裏就是我有

+1

你能在這裏展示你的結果嗎? – Astha

+0

什麼是查詢?什麼是foreach循環代碼?使用mysql_fetch_assoc而不是mysql_fetch_array。 –

+0

顯示你的結果 – Leonardo

回答

0

最簡單的方法是使用下面的代碼:

$result = mysql_query("SELECT * FROM customer"); 
while($posts = mysql_fetch_array($result)){ 
echo $posts['customer_name']; 
} 

更新的答案,以反映確切瓦爾在這個問題

$sql = "SELECT * FROM customers"; 
$result_set = mysql_query($sql, $this->connection); 
while($records = mysql_fetch_array($result_set)){ 
    echo $records['customer_name']; 
} 

使用現在#customer_name可以通過你在該表來獲取數據的任何字段名稱所取代。

,如果你想使用的foreach有$我的號碼跟蹤結果的數量,那麼你可以創建$i = 0;while()外,在其關閉之前結束,只需添加$i++

+0

是的,感謝您的建議..我想用foreach玩,但正如我所見,我必須使用更多的代碼來使用foreach ..我做了你在這裏寫的東西..現在我有這個愚蠢的資源ID#101 < - 那是什麼? – mrGott

+0

如果我沒有錯誤地迴應一個數組或其他東西,因爲回顯數組通常會返回一個資源ID #something錯誤,您可以粘貼包含您的mysql查詢在內的所有代碼嗎? – ahoura

+0

我加了..有些線條是額外的,但要注意... – mrGott

4
foreach ($data as $id => $val) 
{ 
    if ($id == 'customer_id') 
     echo $val; 
} 
1
// $resultSet = mysql_query(...); 
for ($data = array(); $row = mysql_fetch_assoc($resultSet); $data[] = $row); 
$customerId = $data['customer_id']; 
1

該功能一次只能返回一個行( 下一個行)。使用while循環,而不是一個foreach循環(從the manual): 「熱鬧的結果」

$result = mysql_query("SELECT id, name FROM mytable"); 

while ($row = mysql_fetch_array($result, MYSQL_NUM)) { 
    printf("ID: %s Name: %s", $row[0], $row[1]); 
} 
+0

耶可能可以使用,但仍然想改正我的foreach ... – mrGott

1

可以使用mysql_fetch_assoc,而不是如果數組然後

foreach($arr as $key=>$val) 
{ 
if ($key=='customer_id') 
    echo $val; 
if ($key=='customer_name') 
    echo $val; 
} 
1
foreach($array as $key => $value) 
    if($key == "customer_id") 
     // do smth 

什麼樣的
如果你認爲你有兩個相同的值的鍵(array[0] === array['customer_id']),可以修復。一種方法是通過陣列鑄造對象擺脫數字指標:

foreach((object)$data as $key => $value) 
    // do smth 
+0

我不能告訴你結果,因爲它是在HTML SELECT形式,但我可以說我是顯示不是什麼它被認爲是.. 我可以使用WHILE,它會正常工作,但我想保持foreach可能,看起來更好,更乾淨..所以任何想法如何優化它? (object)< - 只是直接寫對象? – mrGott

+0

這就是我所擁有的...... – mrGott