【问题标题】:How to insert data from a select query using php如何使用 php 从选择查询中插入数据
【发布时间】:2019-04-09 16:04:19
【问题描述】:

我想从另一个通过 ODBC 连接的数据库向 mysql 表插入数据。但我无法进入 while 循环,这是我的代码 - 注意:为了安全起见,我不提供数据库名称、用户和密码。 声明为“connStr”的 ODBC 连接

 <?php
    $connStr = odbc_connect("database","user","pass");
    $conn = mysqli_connect("server","user","pass","database");
    //$result_set=mysqli_query($conn,$datequery);
    //$row=mysqli_fetch_array($result_set);

    echo "<br>";

    echo "<br>";

    $query="select cardnumber, peoplename, creditlimit, ROUND(cbalance,2) as cbalance, minpay from IVR_CardMember_Info
    where cardnumber not like '5127%'" ;


        $rs=odbc_exec($connStr,$query);
        $i = 1;
        while(odbc_fetch_row($rs))
        {   //echo "Test while";
            $cardnumber=odbc_result($rs, "cardnumber");
            $peoplename=odbc_result($rs, "peoplename");
            $creditlimit=odbc_result($rs, "creditlimit"); 
            $cbalance=odbc_result($rs, "cbalance"); 
            $minpay=odbc_result($rs, "minpay");


            $conn = mysqli_connect("server","user","pass","database");
            $sql= "INSERT INTO test_data(cardnumber, peoplename, creditlimit, cbalance, minpay) VALUES ('cardnumber', 'peoplename', 'creditlimit', 'cbalance', 'minpay') ";
            if(!(mysqli_query($conn,$sql))){
                //echo "Data Not Found";
                echo "<br>";

            }
            else{
                echo "Data Inserted"; 
                echo "<br>";
            }
            echo $i++ ;
        }

    echo "<br>";
odbc_close($connStr);

?>

我该如何解决这个问题?

【问题讨论】:

  • 附带说明,无需在 while 循环内重复 mysqli 连接。你已经把它放在上面了。
  • 已删除,但仍会发生同样的情况。
  • @Ashiq 你能把 odbc_errormsg (connStr); $connStr = odbc_connect("database","user","pass");并发布结果?
  • @Ashiq 并不是要解决这个问题,而是另一个会导致 MySQL 服务器崩溃的问题

标签: php mysql while-loop insert-into


【解决方案1】:

如果你真的想明白为什么不能输入while() {...},你需要考虑以下几点。

首先,您调用odbc_connect(),它需要数据库源名称、用户名和密码作为第一个、第二个和第三个参数。它应该是这样的(无 DSN 连接):

<?php
...
$connStr = odbc_connect("Driver={MySQL ODBC 8.0 Driver};Server=server;Database=database;", "user", "pass");
if (!$connStr) {
    echo 'Connection error';
    exit;
}
...
?>

其次,检查odbc_exec()之后的错误:

<?php
...
$rs = odbc_exec($connStr, $query);
if (!$rs) {
    echo 'Exec error';
    exit;
}
...
?>

【讨论】:

    【解决方案2】:

    你可以用 SQL 检查它here,比如:

         INSERT INTO test_data(cardnumber, peoplename, creditlimit, cbalance, minpay) 
         SELECT cardnumber, peoplename, creditlimit, 
         ROUND(cbalance,2) as cbalance, minpay from IVR_CardMember_Info
         where cardnumber not like '5127%'
    

    【讨论】:

    • 这两个表(源和目标)位于两个不同的数据库和不同的连接上,因此“单一查询”方法永远行不通
    猜你喜欢
    • 2014-12-31
    • 2016-08-26
    • 1970-01-01
    • 1970-01-01
    • 2018-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多