在php中内爆或爆炸mysql_fetch_array

时间:2012-11-13 09:26:09

标签: php mysql

你好。 我目前正在尝试创建一个mysql查询而不是获取结果并在另一个查询中使用它们。所以我认为我正在调用我的数据库并使用mysql_fetch_array而不是内爆它会插入,所以我可以在另一个查询中使用它。我在这里阅读了很多关于此的问题,并根据我编写自己的代码的问题,但我收到了这个错误:

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

4 个答案:

答案 0 :(得分:0)

你在while循环中使用mysql_fetch_array($result),这是完全正确的。

但显然这只会从数据库而不是整列中返回表中的一行。

因此$resultarray3['Index'];返回第一个表行的Index列的值,该列不是数组。

答案 1 :(得分: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.");";
}

答案 2 :(得分: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
        }

答案 3 :(得分: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;