1

How do i use where clause for array if value[3] has multiple data stored

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

2 Answers2

0

You can use regex function instead of like. Below is the sample code for you.

$partnumner = [];

    foreach($value[3] as $v)
    {
        $partnumber[] = "*.".$v.".*";
    }

    $fsql="select * from Error where RptDatime = 201706091000 and partnumber REGEXP  '".implode("|",$partnumber)."'";

If you still wish to use like, you can follow the answer here

d3no
  • 121
  • 1
  • 3
  • 12
-1

I assume that you have array of numbers so, first you should validate for expected data and then to implode it into comma separated string.

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;
}
4EACH
  • 2,132
  • 4
  • 20
  • 28