gpt4 book ai didi

mysql - 遍历MYSQL数据库并替换一列中每条记录中的数据

转载 作者:行者123 更新时间:2023-11-29 08:41:28 25 4
gpt4 key购买 nike

在清除所有非数字后,我有一种非常低效的方法来更新数据库中的电话号码。

$san_phone = mysql_query('SELECT * FROM table');

while ($row = mysql_fetch_array($san_phone)) {
$row['phone_clean'] = preg_replace('#[^\d]#', '', $row['phone']);
echo $row['id'] . ' - ' . $row['phone_clean'] . '<br>';

mysql_query("UPDATE table SET phone = " . $row['phone_clean'] . " WHERE id = " . $row['id']);
}

循环的更新部分导致我在 2,400 条记录中仅处理大约 400 条后就超时。很明显我做错了,所以在教育我时要温柔。 ;)

最佳答案

首先,停止使用 mysql_ 函数 being deprecated 。请改用 mysqli_PDO 函数。

您用来更新记录的方法效率低下。您应该创建一个临时表,在单个查询中INSERT新记录,最后运行UPDATE查询来替换数据。

你可以从这个开始:

$san_phone = mysql_query('SELECT id, phone FROM table');
$insertArray = array();

while ($row = mysql_fetch_array($san_phone)) {
$phone_clean = preg_replace('#[^\d]#', '', $row['phone']);
echo $row['id'] . ' - ' . $row['phone_clean'] . '<br>';

$insertArray[] = "(" . $row[id] . ", '" . $phone_clean . "')";
}

$insertQuery = "INSERT INTO tempTable (id, phone) VALUES ";
$insertQuery = implode(", ", $insertArray);
mysql_query($insertQuery);

我做了一个快速演示来说明这个过程。 t1 是原始表,t2 是包含要替换的数据的临时表。

See it in action

关于mysql - 遍历MYSQL数据库并替换一列中每条记录中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13694299/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com