MySQL While循环每次都不执行插入子句


MySQL While Loop Not Performing Insert Clause Every Time

MySQL函数现在有一个简单的问题。我正在尝试运行MySQL表,并将数据从该表移动到另一个表。其中一个表是"users",列是"user_id"。我正在尝试运行while循环,循环遍历表users中的所有行,并在表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 />";
}

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

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

$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 />";
}