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

时间:2013-02-25 07:04:08

标签: php mysql insert mysqli

我现在有一个简单的问题,有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时,它只有一行(第一行),并没有实际添加其他值。我确定我错过了一些简单的事情。谢谢你的帮助!

1 个答案:

答案 0 :(得分: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 />";
}