php - preg_match_all数组插入mysql数据库循环无法正常工作

标签 php mysql database

我正在尝试 preg_match_all 在 mysql 字段中找到的前 12 位数字,并将该数字插入到另一个字段中,循环遍历 Select 语句的所有结果。 我有以下内容,它只放置在所有字段中找到的第一个结果,因此每个 field3 都会插入相同的 12 位数字,该 12 位数字来自 Select 语句找到的最低唯一 ID 字段。任何有关此问题的帮助将不胜感激。

<?php


$query = mysql_query("SELECT * FROM `dbase`.`table` WHERE field1 IS NOT NULL AND field3 IS NULL");
$regexp ='/[0-9]{12}/';

while ($row = mysql_fetch_assoc($query)){
$result=($row["field1"]);

preg_match_all($regexp,$result,$matches,PREG_PATTERN_ORDER);

foreach($matches[0] as $match => $where){
$id=($row["field2"]);
$sql="UPDATE `dbase `.`table ` set field3 = $where WHERE field2 = '$id'";

mysql_query($sql);
}
}
?>

我添加了

print_r( $matches );

输出是一个只有一个结果的数组,该数字位于所有字段中:

数组 ( [0] => 数组 ( [0] => 290970571788 )

)

大括号更改修复了 print_r 输出,以显示此格式的 12 位数字列表(仅显示前两个): 大批 ( [0] => 数组 ( [0] => 151104658286 )

) 大批 ( [0] => 数组 ( [0] => 271249191324 )

) 谢谢你。

利用此处给出的答案和建议,我编辑了代码以显示最终的工作版本。最后一个大问题是让第二个 select 语句使用数组结果,正确循环并将每个值插入到正确的行中。还清理了第一个 select 语句,并将 preg_set_order 更改为 preg_pattern_order。

最佳答案

不应该

{while ($row = mysql_fetch_assoc($query))

}

但是

while ($row = mysql_fetch_assoc($query)) {

}

您不想使用 while 语句创建代码块,但希望为其提供代码块。

而且您还在 SELECTUPDATE 中使用相同的 WHERE 条件,因此它将更新具有相同值的所有选定行(所有将符合该条件)。

关于php - preg_match_all数组插入mysql数据库循环无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18592047/

相关文章:

javascript - 是否可以在客户端存储信息?

javascript - 如何让页面先加载javascript,然后才加载php?

mysql - 字典的数据库选择

php - 在这种情况下如何查询两个表?

Mysql加入帮助

php - 检查 MySQL 数据库的值

sql - 使用 SSIS 或 T-SQL 维护数据库?

php - 数组到字符串转换错误?

javascript - AdSense 如何仅从 Javascript 文件生成广告?

sql - 如何在 Postgres 中进行昵称搜索