我在 php 和 mysql 方面遇到了麻烦。我必须从 DB1 的表中检索所有记录,然后必须将它们再次插入到 DB2 的表中。
<?php
require_once 'includes/config.php';
include 'includes/header.php';
if(isset($_POST['go'])){
$query = mysql_query("SELECT id,username,password FROM $db_database1.account")
or die(mysql_error());
echo "Record ".mysql_num_rows($query)." retrieve";
while($result_row = mysql_fetch_array($query, MYSQL_ASSOC)){
$account_ID = $result_row['id'];
$username = $result_row['username'];
$password = $result_row['password'];
$query = mysql_query("INSERT INTO $db_database2.account(uid,username,password) VALUES('$account_ID','$username','$password')")
or die(mysql_error());
$selectId = mysql_insert_id();
}
}
mysql_close($conn);
?>
<div class="wrapper">
<div class="content">
<form method="post" action="<?PHP $_SERVER['PHP_SELF'];?>">
<input type="submit" name="go" value="Go" />
</form>
</div>
<?php include 'includes/footer.php';?>
根据此代码,仅插入了一条记录。如何插入所有检索到的记录?
最佳答案
要将记录插入到另一个表中,您需要一个查询,无需使用 PHP 从 mysql 控制台运行:
INSERT INTO db_database2.account SELECT id,username,password FROM db_database1.account
代码注释
- 您必须转义要添加到查询中的字符串
- 由于某种原因,您要插入同一个数据库
- 请求 mysql_insert_id() 没有任何意义,因为您显然已经插入了 a_i id
- 将第二个 mysql_query 结果存储到变量中是没有用的
- 但是这个变量被覆盖<-这就是您的代码运行一次的原因。
- 此处回显
$_SERVER['PHP_SELF']
没有任何用处。只需将表单操作留空即可。 - 但实际上您将表单操作留空,因为您只是忘记
回显
此变量 - 我认为这里的所有表单和 HTML 都没有用。您不能在没有表单的情况下运行此代码吗?
因为看起来整个困惑只是为了散列密码,所以你不需要额外的表
很简单
UPDATE account SET password = md5(concat(id,username,password));
在进行此类操作之前始终有数据库备份
关于php - 检索所有记录并从另一个数据库插入到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9372658/