2017-06-12 14 views
0

如何使用REGEXP從數組中提取多個數據$vall使用REGEXP獲取多個值的PHP SQL語句

我稱爲一個示例代碼: PHP sql statement where clause to multiple array values

一些樣品數據的:CGCG-0025-0,CGCR-0003-0,CGRQ-0163-0

foreach ($list as $value) // this $list is from another array 
{ 
    $part = $value[3]; 
    $vall[] = $value[3]; // $list1 is an empty array 
} 

$partnumber =[]; 

foreach($vall as $v) 
{ 
    $partnumber[] = "*.".$v.".*"; 

    print_r(array_values($partnumber)); // these are some of the values Array ([0] => *.CGCG-0025-0.*) Array ([0] => *.CGCG-0025-0.* [1] => *.CGCG-0025-0.*) Array ([0] => *.CGCG-0025-0.* [1] => *.CGCG-0025-0.* [2] => *.CGCR-0003-0.*) 
} 

foreach($partnumber as $x) 
{ 
    echo '<br>'.$partnumber; // shows 'Array' on each lines 
} 

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

//example 1 $fsql="select * from MPdError where RptDatime = 201706091000 and partnumber = ('CGRQ-0057-0') "; 
//example 1 shows the correct data but i need multiple partnumber 
$getResults = $conn->prepare($fsql); 
$getResults->execute(); 
$results = $getResults->fetchAll(PDO::FETCH_BOTH); 

foreach($results as $row) 
{ 
    $mac = $row['Machine']; 
    $id = $row['Id']; 
    echo '<br><br><br>ID:'.$id.'<br>Machine Number :'.$mac; 
} 
+0

瞭解準備好的發言,以防止SQL注入 – Jens

+0

請添加一些樣本數據和TEH預期的結果 – Jens

+0

'* .CGCG-0025-0 *'是不是一個有效的正則表達式。 '。* \。CGCG-0025-0 \ .. *'將是一個有效的正則表達式 – apokryfos

回答

0

雖然這可能不是一個好的解決方案,因爲它包含巨大的安全風險,我仍然會根據上面的需求發佈它。

對於設計上不復雜的數據,不需要REGEXP。

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