0

我现在遇到的一个简单问题是使用 MySQL 函数。我正在尝试运行一个 MySQL 表并将数据从该表移动到另一个表。一个表是'users',列是'user_id'。我正在尝试运行一个while循环来遍历表用户中的所有行并在表'new_users'中创建新行。这是我的代码:

$sql = "SELECT * FROM users";
$result = $mysqli->query($sql);

while($row = mysqli_fetch_array($result)){
$sql_create_new = "INSERT INTO new_users (user_id) VALUES ('$row[user_id]')";
$result_create_new = $mysqli->query($sql_create_new);
echo $row['user_id']."<br />";
}

它正确地回显了表用户中 user_id 的所有值,所以我知道循环正在运行。但是,当我检查表 new_users 时,它只有一行(第一行)并且实际上并没有添加其他值。我确定我错过了一些简单的东西。谢谢你的帮助!

4

1 回答 1

2

评论中也提到了这一点,但不能强调简单性的重要性:

$mysqli->query('INSERT INTO new_users (user_id) SELECT user_id FROM users');

要防止与目标表中已有的任何记录发生冲突,请使用INSERT IGNORE INTOREPLACE INTO

否则,您应该正确使用准备好的语句:

$create_new_stmt = $mysqli->prepare('INSERT INTO new_users (user_id) VALUES (?)');

while ($row = $result->fetch_array()) {
    $create_new_stmt->bind_param('i', $row['user_id']);
    $create_new_stmt->execute();
    echo $row['user_id']."<br />";
}
于 2013-02-25T07:30:40.923 回答