2012-11-13 89 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;