簡體   English   中英

PHP sql語句where子句到多個數組值

[英]PHP sql statement where clause to multiple array values

如果value [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;
}

您可以使用regex函數代替like。 以下是適合您的示例代碼。

$partnumner = [];

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

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

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

我假設您有一個數字數組,因此,首先應驗證期望的數據,然后將其內含到逗號分隔的字符串中。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM