php - 在 PHP 中循环并更新 sql 表的每一行

标签 php mysql sql for-loop

我正在尝试制作一个快速的小脚本,将一些虚拟数据添加到我添加到数据库表中的新列中,该表有 1000 个条目,因此手动执行并不是一个真正的选择。

我现在拥有的是:

<?php

$conn = mysql_connect('localhost', 'root', ''); mysql_select_db('cdb', $conn);                      

$string = "4050605040302030405060708070304050403040506070605040302010203040506070655545352515756535243515353545"; //50 values
$mpgsplit = str_split($string, 2);

for ($i=0; $i<=20; $i++)
{
    for ($x=0; $x<=50; $x++)
    {$r = mysql_query  ("UPDATE cars SET mpg = '".$mpgsplit[$x]."'", $conn);}
}
?>

使用更新的问题不起作用,因为它只是在每次循环时用每个数字替换该列的每一行的值。对我来说,它达到了数组中的第 48 个并超时。

然后使用 insert 只会生成所有新行。

所以我需要一种方法来循环遍历每一行并更新它。

我最接近循环和处理表的单行是这样的:

$result = mysql_query("SELECT * FROM imported_orders");
$orderNo = $_POST['orderNo'];
$row = mysql_fetch_array($result, MYSQL_ASSOC);
if($orderNo>0&&$orderNo<=count($row))
{
    $file = fopen('Order.txt', 'w');
    while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    {

但这只是将行作为变量,不确定我是否可以将其转换为我需要的内容。

可能有一个简单的函数可以做到这一点,但我尝试搜索但找不到它。可能还有一种更简单的方法来实现我总体上想要做的事情,所以这将是受欢迎的。

非常感谢所有帮助。 -汤姆

最佳答案

直接在 mysql 命令行或 PHP 脚本中发出此 sql 语句。

SET @r := 0;
UPDATE  cars
SET     mpg = (@r := @r + 1)
ORDER BY
        RAND()

此 sql 语句会将 0 到数据库总行数之间的数字分配给随机行。我想这可能会有所帮助

关于php - 在 PHP 中循环并更新 sql 表的每一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22409877/

相关文章:

php - Zend Action Controller——重构攻略

java - 使用 hibernate 条件 hibernate 组中的最后一条记录

sql - 在 PostgreSQL 中将 bytea 转换为 double

python - 使用Pycharm调试django meet错误

sql - Oracle上的条件SUM

mysql - LEFT JOIN 为 NULL 条件

javascript - $AJAX 之后无法拖放

php - 合并数组的两个字段值

php - 动态 CSS 和 Javascript

MySQL 由连接引起的计数差异