多次运行相同的查询

时间:2014-02-12 17:58:21

标签: php mysql sql mysqli

我的任务是重新生成每个类代码,但是有超过4,000个,我宁愿不手动执行。在我真正开始搞乱实时服务器之前,我决定使用相同的结构创建一个测试数据库。

我在尝试多次运行同一查询时遇到问题。我想多次运行它,因为我有一个随机生成的字符串(每次运行时也会生成)需要替换其他字符串。

任何帮助,伙计们?

    for ($i = 0; $i < 8; $i++) {
        $password = str_rand();
        $sql = "UPDATE test "
            . "SET classCode = '$password'".
            . "WHERE id = '$i'";
    }

    mysql_select_db('workshe3_worksheetwonder');
    $retval = mysql_query( $sql, $conn );
    if(! $retval ) {
        die('Could not update data: ' . mysql_error());
    }
    echo "All codes regenerated successfully.";
    mysql_close($conn);
}

1 个答案:

答案 0 :(得分:0)

您的代码应如下所示

mysql_select_db('workshe3_worksheetwonder');

for ($i = 0; $i < 8; $i++) {
  $password = str_rand();
  $sql = "
     UPDATE test 
     SET classCode = '$password'
     WHERE id = '$i'";

  $retval = mysql_query($sql, $conn) or die('Could not update data: ' . mysql_error());
}

echo "All codes regenerated successfully.";

mysql_query()是需要进入循环的函数,因为它实际上正在进行更新。您的$sql只是一个包含命令的字符串。如果你没有在你的循环中运行mysql_query()那么你的字符串就会被覆盖而不被使用。

mysql_ functions are deprecated,这意味着您不应该将它们用于新代码。如果您遵循该链接,则有一些替代协议的示例。