Php 如何使用uniqueid()填充MySQL表中所有记录的字段?

Php 如何使用uniqueid()填充MySQL表中所有记录的字段?,php,mysql,Php,Mysql,我是这里的新手,对PHP很了解;请耐心点:-) 我有一个有15000行的MySQL表;我需要用uniqid()PHP函数填充它的一个字段(varchar(15)),以类似于主键的方式使用 算法是: 定位到第一行(记录) 使用uniqid()函数生成一个值 用它更新该记录的空字段 所有这三个步骤直到表的末尾(所有记录) 什么是PHP代码来完成这一切?首先,15000行不是很多。因此,可以通过多种方式实现。其次,SQL中没有“第一行”、“第二行”或“最后一行”这样的概念。所以你的算法不起作用,除非你

我是这里的新手,对PHP很了解;请耐心点:-)

我有一个有15000行的MySQL表;我需要用
uniqid()
PHP函数填充它的一个字段(
varchar(15)
),以类似于主键的方式使用

算法是:

  • 定位到第一行(记录)
  • 使用
    uniqid()
    函数生成一个值
  • 用它更新该记录的空字段 所有这三个步骤直到表的末尾(所有记录)


    什么是PHP代码来完成这一切?

    首先,15000行不是很多。因此,可以通过多种方式实现。其次,SQL中没有“第一行”、“第二行”或“最后一行”这样的概念。所以你的算法不起作用,除非你说的是当前抓取的记录集中的第一行,或者你的算法是光标中的第一行

    无论如何,我不会那样做。我将分两步来完成,创建一个具有您想要的确切格式的表,但ID字段是一个自动递增字段,然后
    按某种方式插入newtable select*from oldtable order

    最后,您声明这是一个PHP问题,但听起来您要求的是一次性解决方案。如果是这样的话,我就用SQL来完成它,而不是编写PHP来完成它。

    $cnt=0;
    
    $cnt = 0;
    $result = mysql_query('SELECT COUNT(*) AS cnt FROM table');
    if (($row = mysql_fetch_assoc($result)) !== false) {
        $cnt = $row['cnt'];
    }
    $ids = array();
    $num = 0;
    while ($num < $cnt) {
        $id = uniqid();
        while(in_array($id, $ids)) {
            $id = uniqid();
        }
        mysql_query('UPDATE table SET the_column_you_need_to_update='.$id.' LIMIT 1 OFFSET '.$num);
        $num++;
    }
    
    $result=mysql_query('SELECT COUNT(*)AS cnt FROM table'); if(($row=mysql\u fetch\u assoc($result))!==false){ $cnt=$row['cnt']; } $ids=array(); $num=0; 而($num<$cnt){ $id=uniqid(); while(在_数组中($id,$id)){ $id=uniqid(); } mysql_query('updatetable将您需要的_列设置为_UPDATE='。$id.'LIMIT 1 OFFSET.$num); $num++; }
    您好,谢谢您的光临。它正确地回答了我的问题。猜在类似PHP代码论坛上发布的同一个帖子只得到了另一个正确答案!!非常感谢。好的帮助论坛在这里!!Cypherinfo。