0

SDKに基づいて一部の製品のIDを取得したいのですが、2つまたは複数の製品がある場合は、最初のIDのみが返されます...

誰かが私を助けることができますか?

どうもありがとう

これは私が使用したコードです...(私はphpを初めて使用します)

<?
     foreach(array_keys($nume_individual) as $n){

        $sql = mysql_query("SELECT * FROM products WHERE cod_produs = '$cod_produs_individual[$n]' LIMIT 1");
        while($row = mysql_fetch_assoc($sql)){
                $id_s[$n]=$row["id"];

        }


    echo (
        "<tr>
        <td>".$id_s[$n]."</td>  /* this is not working well (running just once) */
            <td>".$nume_individual[$n]."</td> 
        <td>".$cod_produs_individual[$n]."</td>
        <td>".$numar_individual[$n]."</td>
        <td>".$bucati_individual[$n]."</td>
        <td>".$pret_individual[$n]."</td>



        </tr>

        ");

        };?>
4

3 に答える 3

0

私は問題を解決することができました。これがコードです。おそらく誰かにとって役立つでしょう:)

<? 
$cod_produs_individual2 = array_pop($cod_produs_individual) ;
$csv =implode(',', $cod_produs_individual); 
$csv2 = "'" . join("', '", $cod_produs_individual) . "'"; 
$csv3= $string = rtrim($csv2, ',');

$query2 = sprintf("SELECT * 
                    FROM products 
                   WHERE cod_produs IN (%s)",
                  $csv3); 

$results2 = mysql_query($query2);
$randuri = mysql_num_rows($results2);

$a = array();

if ($randuri >0) { while($row = mysql_fetch_array($results2)){ 

    array_push ($a, $row["id"]);

        }
}
print_r ($a);

foreach(array_keys($nume_individual) as $n){

    echo (
    "<tr>
    <td>".$a[$n]."</td>
    <td>".$nume_individual[$n]."</td>
    <td>".$cod_produs_individual[$n]."</td>
    <td>".$numar_individual[$n]."</td>
    <td>".$bucati_individual[$n]."</td>
    <td>".$pret_individual[$n]."</td>



    </tr>

    ");



    };?>
于 2012-10-23T22:15:02.750 に答える
0

これは、1 行だけを返すように制限 1 を設定したためです。

$sql = mysql_query("SELECT * 
                     FROM products 
                      WHERE cod_produs = '$cod_produs_individual[$n]' 
                      LIMIT 1 // this is the reason you getting only one row 
                      "); 

次に、while ループの外側でエコーを使用し、これを while loopp の内側で使用します。

于 2012-10-23T18:36:14.377 に答える
0

echowhile ループの中に入れてlimit 1、クエリから を削除します。

クエリにがあるlimit 1場合、DB から 1 行のみを返すように結果を制限しています。また、while ループの外側にエコーがある場合は、DB から最後にロードされた行のみを出力します。

また、特定の配列から $n のキーの値を出力しているようにも見えます。$n が何かはわかりませんが、メインの foreach インデックスを使用しているため、行の ID を使用してみることをお勧めします。

foreach(array_keys($nume_individual) as $n){
    $sql = mysql_query("SELECT * FROM products WHERE cod_produs = '$cod_produs_individual[$n]'");
    while($row = mysql_fetch_assoc($sql)){
        $id_s[$n]=$row["id"];
        echo (
            "<tr>
            <td>".$row["id"]."</td>  
            <td>".$nume_individual[$row["id"]]."</td>
            <td>".$cod_produs_individual[$row["id"]]."</td>
            <td>".$numar_individual[$row["id"]]."</td>
            <td>".$bucati_individual[$row["id"]]."</td>
            <td>".$pret_individual[$row["id"]]."</td>
            </tr>"
        );
    }
}
于 2012-10-23T18:36:17.870 に答える