1

嗨,大家好。我目前正在尝试进行 mysql 查询,而不是获取结果并在另一个查询中使用它们。所以我想我正在调用我的数据库并使用 mysql_fetch_array 而不是 implode 它插入,所以我可以在另一个查询中使用它。我在这里阅读了很多关于此的问题,并基于我编写自己的代码的问题,但我收到了这个错误:

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

4 回答 4

0

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

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

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

于 2012-11-13T09:29:55.523 回答
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.");";
}
于 2012-11-13T09:34:41.037 回答
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
        }
于 2012-11-13T09:36:21.217 回答
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;
于 2012-11-13T09:37:22.587 回答