Я немного опаздываю в игру и пытаюсь перейти на 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++; }