PHP PDO: массив SELECT внутри IN ()

Я немного опаздываю в игру и пытаюсь перейти на PDO из mysql_ *, пытаясь решить текущую задачу. У меня есть интерфейс, где я фиксирую значения числа ящиков в массиве и этот массив хранится в другом массиве по отдельной позиции (для ясности это вложенные массивы).

Моя основная цель – взять номера ящиков для определенной позиции и запустить запрос выбора mysql, чтобы вернуть количество единиц в этом заданном наборе ящиков. Если число в ящиках не является количеством, которое, по мнению пользователя, я хочу, чтобы оно выдало ошибку.

В настоящее время моя задача – получить пустой набор результатов. Я считаю, что это связано с тем, что мой массив номеров ящиков не был правильно передан в инструкцию выбора PDO. Любые мысли или рекомендации будут высоко оценены.

Вот что я имею до сих пор:

$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++; } 

Это было сделано. Спасибо Марку Б за его мысли:

 $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++; } в $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++; } с $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++; }