【发布时间】:2017-06-12 10:22:23
【问题描述】:
如何使用 REGEXP 从数组$vall 中获取多个数据。
我参考了以下示例代码: 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;
}
【问题讨论】:
-
了解预处理语句以防止 SQL 注入
-
请添加一些示例数据和预期结果
-
*.CGCG-0025-0.*不是有效的正则表达式。.*\.CGCG-0025-0\..*将是一个有效的正则表达式 -
我试过改了还是不行 $partnumber[] = ".*\.".$v."\..*";
-
我不明白为什么在零件号前后需要通配符。例如,
$v包含什么?