使用唯一值更新MYSQL中的每一行

时间:2013-10-24 21:05:38

标签: php mysql

我正在尝试为我的数据库中的每一行分配一个名为'uniqueid'的字段。大约有188,000行可用。

以下是我正在使用的代码:

$connection = mysql_connect("localhost","root","root");
mysql_select_db("comics",$connection) or die ("Database not found");

$query = mysql_query("select * from comic_issues"); 

if ($query){
  $rows = mysql_num_rows($query);

  foreach($rows as $row){
    $str = strtolower($row['series'].$row['volume'].$row['issue']);
    $str = preg_replace('/[^A-Za-z0-9]/', '', $str);

    $update = "update comic_issues set uniqueid='" . $str . "' where id='" . $row['ID'] . "'";
    mysql_query($update);

    exit();
  }
}

正在发生的是每一行都使用相同的uniqueid进行更新,每次运行脚本时,这似乎都是不同的值。

2 个答案:

答案 0 :(得分:1)

让MySQL为您完成所有工作:

UPDATE comic_issues SET uniqueid = LOWER(CONCAT(series,volume,issue))

如果还必须删除所有非字母数字字符,则可以编写存储的函数,也可以使用UDF。

答案 1 :(得分:1)

而不是

foreach($rows as $row){

你需要做

while ($row = mysql_fetch_row($query)) {

在您的代码$rows中是一个数字而不是一个数组,因此您无法对其进行操作。