0

私はゲームに少し遅れており、現在の課題に取り組みながら、mysql_* から PDO に移行しようとしています。配列内のボックス番号の値をキャプチャするインターフェイスがあり、その配列は項目ごとに別の配列に格納されます (わかりやすくするために、これらはネストされた配列です)。

私の主な目的は、特定の項目のボックス番号を取得し、mysql 選択クエリを実行して、そのボックス セットのユニット数を返すことです。ボックス内の数量が、ユーザーが考えている数量と異なる場合は、エラーをスローする必要があります。

現在、私の課題は、空の結果セットを取得していることです。これは、ボックス番号の配列が PDO select ステートメントに適切に渡されていないことが原因であると考えています。ご意見やご指導をいただければ幸いです。

これが私がこれまでに持っているものです:

$Boxes = $_POST['Boxes']; //this includes box numbers within an array for each line item of a form

$e = 0;

while($e<$num1){
$units = 0;
$r = 0;
$SO_Line_Item=mysql_result($result1,$e,"SO_Line_Item");

    foreach ($Boxes[$e] as $a => $b)  // the purpose of this loop is to take the values from Boxes and store it in $zzz which I hope to use in my Select statement below.
    {
    $zzz[] = $Boxes[$e][$r];
    $r++; 
    }
   //end inner foreach

$BNs= implode(',', $zzz);

$db = new PDO('mysql:host=XXXXXX ;dbname=XXXXXX', $dbuser,$dbpass);
$stmt = $db->prepare("SELECT Box_Num,Timestamp,SN,Assy_Status FROM Current_Box WHERE Box_Num IN(' . $BNs . ')");
$stmt->execute($zzz);   

$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
var_dump($results); // this shows up as an empty array

}  
$e++;
}
4

1 に答える 1

0

これで出来ました。Marc B の考えに感謝します。

$e = 0;

while($e<$num1){
$units = 0;
$r = 0;
$SO_Line_Item=mysql_result($result1,$e,"SO_Line_Item");

    foreach ($Boxes[$e] as $a => $b)  
    {

        $zzz[] = $Boxes[$e][$r];

$ce = count($Boxes[$e]);        

    $r++; 
    }
//end inner foreach

$products = implode(',', array_fill(0,$ce, '?'));

$db = new PDO('mysql:host=192.168.1.197 ;dbname=Tracking', $dbuser,$dbpass);
$stmt = $db->prepare("SELECT Box_Num,Timestamp,E3_SN,Assy_Status FROM Current_Box WHERE Box_Num IN( $products )");
$stmt->execute($zzz);
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
}
unset($zzz);
$e++;
}
于 2012-08-28T00:24:02.440 に答える