2012-11-13 135 views
1

人喜。 目前我試圖使MySQL查詢比拿結果,並在另一個查詢中使用它們。所以我想我打電話給我的數據庫和使用mysql_fetch_array比爆它不插入,這樣我就可以在另一個查詢中使用它。我讀到這這裏的許多問題,並根據我自己寫了一段代碼的問題,但我得到這個錯誤:內爆或爆炸mysql_fetch_array在PHP

Warning: array_values() expects parameter 1 to be array, string given in /var/www/html/lager_management/warenkorb.php on line 107 

Warning: implode(): Invalid arguments passed in /var/www/html/lager_management/warenkorb.php on line 108 

這裏是什麼錯誤,我無法解釋自己的代碼段我知道mysql是舊的,我應該使用myqli

$sql3 = "SELECT `Index` FROM lm_Warenkorb;"; 
     $result3 = mysql_query($sql3); 
     while($resultarray3 = mysql_fetch_array($result3)) 
     { 
     $anfrage = array(); 
     $anfrage = $resultarray3['Index']; 
     $anfrage = implode(", ", $anfrage); 

      $sql2 = "SELECT `Index`, `Artikelbezeichnung`, `Status`, `Bestand`, `Lieferant`, `Datum-Einlagerung`, `Lagerort` FROM `lm_Artikel` WHERE `Index` IN (".$anfrage.");"; 
     } 

表lm_Warenkorb看起來是這樣的:

Index: 
    10 
    2 
    6 
+0

你能告訴你的數據庫列'Index'的樣本數據? – Leri

+0

@PLB我增加它在我的崗位 – Alesfatalis

回答

0

我想你可以使用嵌套的SELECT做到這一點使用一個查詢:

$sql3 = " 
SELECT `Index`, `Artikelbezeichnung`, `Status`, `Bestand`, `Lieferant`, `Datum-Einlagerung`, `Lagerort` 
    FROM `lm_Artikel` 
    WHERE `Index` IN (
     SELECT `Index` FROM lm_Warenkorb 
    )"; 

     $result3 = mysql_query($sql3); 

     while($resultarray3 = mysql_fetch_array($result3)) { 
      // handle the results 
     } 
+0

或者一個簡單的'加入lm_Warenkorb.Index = lm_Artikel.Index' – VolkerK

+0

謝謝你完美的工作。有了這個我不必使用'implode' – Alesfatalis

0

您使用mysql_fetch_array($result)在一個while循環中,這是完全正確的。

但是這顯然將只從數據庫返回的表中的一行,而不是整列。因此

$resultarray3['Index'];返回第一個錶行,這不是數組的索引列的值。

+0

它返回它在像這樣的格式:10 6 2 – Alesfatalis

+0

只要你使用這個while循環,它會在一個時間只返回一個索引。實際上,如果你使用'$ resultarray3 ['Index']',它會打印所有的索引,但是每個索引都是一個接一個地打印。您應該在whilr循環內填充一個數組,然後執行第二個查詢。 – sailingthoms

0

試試這個

$anfrage = array(); 
while($resultarray3 = mysql_fetch_array($result3)) 
{ 
$anfrage[] = $resultarray3['Index']; 
} 

if(count($anfrage) > 0) { 
    $anfrage = implode(",", $anfrage); 
    $sql2 = "SELECT `Index`, `Artikelbezeichnung`, `Status`, `Bestand`, `Lieferant`, `Datum-Einlagerung`, `Lagerort` FROM `lm_Artikel` WHERE `Index` IN (".$anfrage.");"; 
} 
+1

只是一個提示,如果你正在使用關聯數組,使用mysql_fetch_assoc而不是mysql_fetch_array –

+0

nope不起作用它只是沒有發生任何事情,第二個查詢得到一個錯誤,說無效參數 – Alesfatalis

+0

你能粘貼你的編輯代碼嗎? – GBD

0
$sql3 = "SELECT `Index` FROM lm_Warenkorb;"; 
$result3 = mysql_query($sql3); 
$data = array(0); 
while($resultarray3 = mysql_fetch_assoc($result3)) 
{ 
    $data[] = $resultarray3['Index']; 
} 
$sql2 = "SELECT `Index`, `Artikelbezeichnung`, `Status`, `Bestand`, `Lieferant`, `Datum-Einlagerung`, `Lagerort` FROM `lm_Artikel` WHERE `Index` IN (".implode(',', $data).");"; 
echo $sql2;