1

こんにちは、みんな。現在、結果を取得して別のクエリで使用するよりも、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

4 に答える 4

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 を使用して 1 つのクエリを使用して実行できると思います。

 $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

mysql_fetch_array($result)whileループで使用しますが、これは完全に正しいです。

しかし、これは明らかに、列全体ではなく、データベースからテーブルの1行のみを返します。

したがって$resultarray3['Index'];、配列ではない最初のテーブル行のインデックス列の値を返します。

于 2012-11-13T09:29:55.523 に答える
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 に答える