【问题标题】:Loop through and Update each row of an sql table in PHP在 PHP 中循环并更新 sql 表的每一行
【发布时间】:2014-04-20 00:46:21
【问题描述】:

我正在尝试制作一个快速的 lil' 脚本,以便将一些虚拟数据添加到我添加到我拥有的数据库表中的新列中,该表有 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 位并超时。

然后使用插入只会创建所有新行。

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

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

$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)) 
    {

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

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

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

【问题讨论】:

    标签: php mysql sql for-loop


    【解决方案1】:

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

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

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

    【讨论】:

    • 不知道怎么回事,但这让我意识到该表的主键只有 1-1000,所以我可以根据循环号在我的 sql 中添加一个 WHERE 子句。好久没接触 php 和 sql 我完全忘记了主键。
    猜你喜欢
    • 2018-07-19
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    相关资源
    最近更新 更多