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

时间:2010-06-23 14:29:57

标签: php mysql

我是这里的新手,关于PHP;请耐心等待: - )

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

算法是:

  1. 定位到第一行(记录);
  2. 使用uniqid()函数生成值;
  3. 用它更新该记录的空字段;
  4. 直到表格结尾的所有这三个步骤(所有记录)。

    完成所有这些操作的PHP代码是什么?

2 个答案:

答案 0 :(得分:2)

首先,15000行不是很多。所以它可以通过多种方式完成。其次,SQL中没有“第一行”或“第二行”或“最后一行”这样的概念。因此,除非您说的是当前抓取的记录集中的第一行或光标中的第一行,否则您的算法将无效。

无论如何,我不会这样做。我会分两步,通过创建一个具有您想要的确切格式的表,但ID字段是一个自动增量字段,然后insert into newtable select * from oldtable order by something

最后,您说这是一个PHP问题,但听起来您要求的是一次性解决方案。如果是这种情况,我只会在SQL中使用它,而不是尝试编写PHP来实现它。

答案 1 :(得分: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++;
}
相关问题