【问题标题】:Data transfer from one database to another using php and json使用 php 和 json 从一个数据库到另一个数据库的数据传输
【发布时间】:2014-01-28 14:28:12
【问题描述】:

我想使用 PHP 和 JSON 将数据从一个数据库传输到另一个数据库。第一个 MySQL 连接获取并打印数据(正在工作),但第二个 MySQL 连接不会将数据插入到第二个数据库中。我不知道如何执行 INSERT QUERY 以开始填充其他数据库(从 json 编码中检索数据)。

这是我从第一个数据库中得到的:

[{"0":"1","productid":"1","1":"0","parent":"0","2":"","language":"","3":"iPod Shuffle","prodname":"iPod Shuffle","4":"1","prodtype":"1","5":"","prodcode":"","6":"","prodfile":"","7":"

这是我的更新代码:

<?php 

include 'config/config.php';
//include(dirname(__FILE__) . "/settings.inc.php");


//database 1
$data = array();

$conn = @mysql_connect($GLOBALS['VCS_CFG']["dbServer"],$GLOBALS['VCS_CFG']["dbUser"], $GLOBALS['VCS_CFG']["dbPass"]);
if ($conn){
    if (mysql_select_db($GLOBALS['VCS_CFG']["dbDatabase"])) {
        $SQL = "SELECT * FROM vc_products";
        $q = mysql_query($SQL);

        while($row = mysql_fetch_array($q))
        {
            $json_output[] = $row;
        }
        echo json_encode($json_output);
        $data =  json_encode($json_output);                
    }
    mysql_close($conn);
}


 // database 2

$con = @mysql_connect($GLOBALS['_DB_SERVER_'],$GLOBALS['_DB_USER_'], $GLOBALS['_DB_PASSWD_']);
if ($con) { 
    if (mysql_select_db($GLOBALS['_DB_NAME_'])) {


        $sql = "INSERT INTO ps_order_detail(product_name) VALUES('".$data[0][8]."')";  
        $Q = mysql_query($sql);

        foreach ($data as $key => $value)
        {

           $Q -> bind_param(
                  's',   // the types of the data we are about to insert: s = string ( i = int )
                   $value['prodname']

           ); 

            $Q->execute();

        }
         $Q->close();
    }           
     mysql_close($conn);
}  

?>

【问题讨论】:

  • 首先,使用 PDO 代替 mysql_* 函数。

标签: php database json import fetch


【解决方案1】:

我没有看到您正在执行任何插入查询¿? 你只是在构建字符串。

【讨论】:

  • 如何执行插入查询?
  • mysql_query($sql); 在生成 $sql 字符串之后。
  • 谢谢,但我不知道如何使用 json 输出将数据导入其他数据库。实际上我不知道在 INSERT 查询中要写什么。
【解决方案2】:

几个问题:

  • 您正在编码两次,而不是编码和解码;
  • 需要添加错误处理(PDO和mysqli可以抛出异常,非常有用);
  • 你需要去掉错误抑制操作符@;
  • 您应该切换到 PDO 或 mysqli 和准备好的语句以避免 sql 注入问题,因为 mysql_* 函数已被弃用。

不相关,但是当你真的想使用原始数组时,为什么要在同一个脚本中编码和解码为 json?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-17
    相关资源
    最近更新 更多