Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PHP sql语句where子句转换为多个数组值_Php_Mysql_Sql_Arrays_Pdo - Fatal编程技术网

将PHP sql语句where子句转换为多个数组值

将PHP sql语句where子句转换为多个数组值,php,mysql,sql,arrays,pdo,Php,Mysql,Sql,Arrays,Pdo,如果值[3]存储了多个数据,如何对数组使用where子句 $fsql="select * from Error where RptDatime = 201706091000 and partnumber like ('$value[3]')"; $getResults = $conn->prepare($fsql); $getResults->execute(); $results = $getResults->fetchAll(PDO::FETCH_BOTH

如果值[3]存储了多个数据,如何对数组使用where子句

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

我假设您有一个数字数组,所以首先应该验证预期的数据,然后将其内爆为逗号分隔的字符串

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

您可以使用regex函数代替like。下面是您的示例代码

$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;
}
$partnumner = [];

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

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

如果您仍然希望使用like,您可以按照答案进行操作

请了解准备好的语句。您所做的不是准备好的语句的意思检查此链接:-$value[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;
}