【问题标题】:Select multiple columns from a table and insert data into another table in a different database in PHP-MySQL从一个表中选择多个列并将数据插入到 PHP-MySQL 中不同数据库中的另一个表中
【发布时间】:2014-03-23 17:01:21
【问题描述】:

我必须从数据库中的表中选择数据并将它们插入到不同数据库中的另一个表中。下面的代码返回$select_query OK,但$insert_query 不行。能否请您更正代码并让我知道您的回复?

$host1 = "localhost";
$user1 = "jackpot";
$pass1 = "jackpot";
$db1 = "pinkapple";
$host2 = "localhost";
$user2 = "jackpot";
$pass2 = "jackpot";
$db2 = "blueberry";

$mysql_connection1 = mysql_connect($host1, $user1, $pass1);
mysql_select_db($db1, $mysql_connection1) or die(mysql_error());
$select_query = mysql_query("SELECT field1, field2, field3 FROM tree WHERE date_entered > '2014-01-01 16:22:00'", $mysql_connection1);
$number = mysql_num_rows($select_query);

    if ($select_query) {
        echo "Select Query is OK <br>";
        echo $number ."<br>";
    } else {
        echo "Select Query is  not OK <br>";
    }

$mysql_connection2 = mysql_connect($host2, $user2, $pass2, true);

mysql_select_db($db2, $mysql_connection2) or die(mysql_error());

    while ($row = mysql_fetch_array($select_query)) {
    $field1 = $row['field1'];
    $field2 = $row['field2'];
    $field3 = $row['field3'];
    $insert_query = mysql_query("INSERT INTO jungle (desk1, chair1, table1) VALUES ('$field1', '$field2', '$field3')", $mysql_connection2);
        if ($insert_query) {
            echo "Insert Query is OK <br>";
        } else {
            echo "Insert Query is not OK <br>";
        }
}
mysql_close($mysql_connection1);
mysql_close($mysql_connection2);

您可以在下面看到表格的示意图。

【问题讨论】:

  • 您忘记了 INSERT 语句中的 VALUES 关键字。
  • 这是因为您没有抓取原始查询值,如果您不建立值,使用关键字值不会改变任何内容
  • mysqli_num_rows($select_query) 上的输出是什么?
  • @Apiah 所以你的 SELECT 查询首先有问题。请检查表名、列名和 WHERE 子句条件。可以肯定的是,将查询存储在一个变量中,比如$query 并回显它。将回显的查询粘贴到您的 mysql 管理 UI 中,例如 PHPMyAdmin,然后查看您正在做的实际错误。
  • @Apiah 是的,与我之前的评论中所说的相同。通过回显查询来查看您的 INSERT 语句中是否有问题。不是$select_query。原始查询 echo "INSERT INTO jungle (desk1, chair1, table1) VALUES ('$field1', '$field2', '$field3')"; 与 Chitowns24 的答案相同。

标签: php mysql


【解决方案1】:

你需要建立价值观吗​​?

"INSERT INTO jungle (desk1, chair1, table1) VALUES (value1, value2, value3)"

您应该从第一个选择中收集数据,然后您可以在插入语句中设置相关值

您可以使用mysql_fetch 语句来做到这一点

$mysql_connection2 = mysql_connect($host2, $user2, $pass2, true);
mysql_select_db($db2, $mysql_connection2) or die(mysql_error());

while($row = mysql_fetch_array($select_query))
{
    $field1 = $row['field1'];
    $field2 = $row['field2'];
    $field3 = $row['field3'];
    $insert_query = mysql_query("INSERT INTO jungle (desk1, chair1, table1) VALUES ('$field1', '$field2', '$field3')",$mysql_connection2);

    if ($insert_query) {
      echo "Insert Query is OK <br>";
    } else {
      echo "Insert Query is not OK <br>";
    }

}

此语句循环遍历您的 select 语句,并使用您的 INSERT 语句为每个返回的结果插入一行

但实际上您也应该查看mysqli,因为mysql 已贬值。然而,这是你所做的事情背后的基本逻辑

【讨论】:

  • 感谢您的回复。我将其更改为“插入丛林(desk1,chair1,table1)VALUES(field1,field2,field3)”,但仍然没有运气!我还有什么遗漏的吗?
  • 你输出select_query返回的内容了吗?
  • 再次感谢,你的回答很好,我的表结构有问题,一列没有默认值,所以我在插入查询中给该列赋值。
猜你喜欢
  • 1970-01-01
  • 2013-03-04
  • 1970-01-01
  • 2018-08-09
  • 1970-01-01
  • 2014-12-04
  • 2016-11-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多