PHP sql statement, где предложение для нескольких значений массива

Как использовать аргумент where для массива, если значение [3] содержит несколько сохраненных данных

$fsql="select * from Error where RptDatime = 201706091000 and partnumber like ('$value[3]')"; $getResults = $conn->prepare($fsql); $getResults->execute(); $results = $getResults->fetchAll(PDO::FETCH_BOTH); foreach($results as $row) { $mac = $row['Machine']; $id = $row['Id']; echo 'ID:'.$id.'Machine Number :'.$mac; } 

Вы можете использовать функцию regex, а не как. Ниже приведен пример кода для вас.

 $partnumner = []; foreach($value[3] as $v) { $partnumber[] = "*.".$v.".*"; } $fsql="select * from Error where RptDatime = 201706091000 and partnumber REGEXP '".implode("|",$partnumber)."'"; 

Если вы все еще хотите использовать подобное, вы можете ответить на этот вопрос здесь

Я предполагаю, что у вас есть массив чисел, поэтому сначала вы должны проверить правильность ожидаемых данных и затем вставить его в строку, разделенную запятыми.

 if(!isset($value[3])){ return false; } if(!is_array($value[3])){ return false; } foreach($value[3] as $number){ if(!is_numeric($number)){ return false; } } $numbers = implode(",",$value[3]); $fsql=sprintf("select * from Error where RptDatime = 201706091000 and partnumber in (%s)",$numbers); $getResults = $conn->prepare($fsql); $getResults->execute(); $results = $getResults->fetchAll(PDO::FETCH_BOTH); foreach($results as $row) { $mac = $row['Machine']; $id = $row['Id']; echo 'ID:'.$id.'Machine Number :'.$mac; }