php - odbc_connect 不适用于 unixODBC (LINUX)

标签 php linux unixodbc

我已将此代码包含在当前事件主题的 functions.php 中,并且在 WINDOWS 平台 上完美运行(即:我首先将 .mdb 文件上传到服务器上,然后从文件中读取表格)。就像我们使用 MySQL DB 一样简单。

$dbName = $uploadfile;

$conn = odbc_connect("Driver={Microsoft Access Driver (*.mdb)};Dbq=$dbName", "", "");


if($conn != null){

//echo "";exit;

// reading all the tables (data) from mdb file uploaded
$cdc_trans = odbc_exec($conn, "SELECT * FROM axs_web_cdc_trans");
$dealers = odbc_exec($conn, "SELECT * FROM axs_web_dealers");
$web_item = odbc_exec($conn, "SELECT * FROM axs_web_item");
$parties = odbc_exec($conn, "SELECT * FROM axs_web_parties");
$trans = odbc_exec($conn, "SELECT * FROM axs_web_trans");
$voch = odbc_exec($conn, "SELECT * FROM axs_web_voch");




// insert for axs_web_cdc_trans
while($row = odbc_fetch_array($cdc_trans)){
    //break;
        $cdc_trans_date = $row['CDC_TRANS_DATE'];
        $agent_code = $row['AGENT_CODE'];
        $party_user_code = $row['PARTY_USER_CODE'];
        $nature = $row['NATURE'];
        $quantity = $row['CDC_QTY'];
        $item = $row['TRANS_ITEM_SYMBOL'];
        $us_qty = $row['UNSETTLED_QTY'];


        $sql = "INSERT INTO axs_web_cdc_trans (CDC_TRANS_DATE,AGENT_CODE,PARTY_USER_CODE, NATURE, CDC_QTY,TRANS_ITEM_SYMBOL,UNSETTLED_QTY) VALUES ('$cdc_trans_date', '$agent_code', '$party_user_code', '$nature', '$quantity', '$item', '$us_qty')";


        mysql_query($sql) or die("Error: ".mysql_error());
    }

    // insert for axs_web_dealers
    while($row = odbc_fetch_array($dealers)){
    //break;
        $dealer_code = $row['DEALER_CODE'];
        $dealer_name = $row['DEALER_NAME'];
        $cnic = $row['DEALER_NIC_NO'];
        $dealer_add = $row['DEALER_ADDRESS'];
        $dealer_cell = $row['DEALER_MOBILE_NO'];
        $dealer_email = $row['DEALER_EMAIL'];

        $check_user = "SELECT * FROM axs_web_dealers WHERE DEALER_CODE = $dealer_code";

        $chk_res = mysql_query($check_user) or die("Error: ".mysql_error());

        if(mysql_fetch_array($chk_res) > 0)
            continue;

        else{
                $sql = "INSERT INTO axs_web_dealers (DEALER_CODE, DEALER_NAME, DEALER_NIC_NO, DEALER_ADDRESS, DEALER_MOBILE_NO, DEALER_EMAIL) VALUES ('$dealer_code', '$dealer_name', '$cnic', '$dealer_add', '$dealer_cell', '$dealer_email')";
                mysql_query($sql) or die("Error: ".mysql_error());
        }           

    }

    // insert for axs_web_item
    while($row = odbc_fetch_array($web_item)){
    //break;
        $symbol = $row['ITEM_SYMBOL'];
        $sym_name = addslashes($row['ITEM_NAME']);
        $rate = $row['ITEM_RATE'];
        $high_rate = $row['ITEM_HIGH_RATE'];
        $low_rate = $row['ITEM_LOW_RATE'];
        $vol_qty = $row['ITEM_VOL_QTY'];
        $cdc = $row['CDC'];


        $sql = "INSERT INTO axs_web_item (ITEM_SYMBOL,ITEM_NAME,ITEM_RATE, ITEM_HIGH_RATE, ITEM_LOW_RATE,ITEM_VOL_QTY,CDC) VALUES ('$symbol', '$sym_name', '$rate', '$high_rate', '$low_rate', '$vol_qty', '$cdc')";

        mysql_query($sql) or die("Error: ".mysql_error());
    }

    // insert for axs_web_parties
    while($row = odbc_fetch_array($parties)){
    //break;
        $party_user_code = $row['PARTY_USER_CODE'];//continue;
        $party_name = $row['PARTY_NAME'];
        $agent_code = $row['AGENT_CODE'];
        $party_email = $row['PARTY_EMAIL'];
        $party_add = addslashes($row['PARTY_ADDRESS']);
        $party_cell = $row['PARTY_MOBILE_NO'];
        $party_cnic = $row['PARTY_NIC_NO'];


        $check_user = "SELECT * FROM axs_web_parties WHERE PARTY_USER_CODE = $party_user_code";

        $chk_res = mysql_query($check_user) or die("Error: ".mysql_error());

        if(mysql_fetch_array($chk_res) > 0)
            continue;
        else{
                $sql = "INSERT INTO axs_web_parties (PARTY_USER_CODE, PARTY_NAME, AGENT_CODE, PARTY_EMAIL, PARTY_ADDRESS, PARTY_MOBILE_NO, PARTY_NIC_NO) VALUES ('$party_user_code', '$party_name', '$agent_code', '$party_email', '$party_add', '$party_cell', '$party_cnic')";

                mysql_query($sql) or die("Error: ".mysql_error());

        }
    }


    // insert for axs_web_trans
    while($row = odbc_fetch_array($trans)){
    //break;
        $agent_code = $row['AGENT_CODE'];
        $party_usr_code = $row['PARTY_USER_CODE'];
        $trade_date = $row['TRADE_DATE'];
        $nature = $row['NATURE'];
        $trans_qty= $row['TRANS_QTY'];
        $trans_rate = $row['TRANS_RATE'];
        $trans_item_symbol = $row['TRANS_ITEM_SYMBOL'];
        $set_desc = $row['SET_DESC'];
        $comm = $row['COMM'];
        $trans_amt = $row['TRANS_AMT'];
        $trans_posted = $row['TRANS_POSTED'];
        $trade_desc = $row['TRADE_DESC'];
        $comm_amt = $row['COMM_AMT'];
        $cvt_wht_amt = $row['CVT_WHT_AMT'];
        $fed_amt = $row['FED_AMT'];
        $other_chrg_amt = $row['OTHER_CHRG_AMT'];


        $sql = "INSERT INTO axs_web_trans (AGENT_CODE, PARTY_USER_CODE, TRADE_DATE, NATURE, TRANS_QTY, TRANS_RATE, TRANS_ITEM_SYMBOL, SET_DESC, COMM, TRANS_AMT, TRANS_POSTED, TRADE_DESC, COMM_AMT, CVT_WHT_AMT, FED_AMT, OTHER_CHRG_AMT) VALUES ('$agent_code', '$party_user_code', '$trade_date', '$nature', '$trans_qty', '$trans_rate', '$trans_item_symbol', '$set_desc', '$comm', '$trans_amt', '$trans_posted', '$trade_desc', '$comm_amt', '$cvt_wht_amt', '$fed_amt', '$other_chrg_amt')";

        mysql_query($sql) or die("Error: ".mysql_error());
    }

    // insert for axs_web_voch
    while($row = odbc_fetch_array($voch)){
    //break;
        $voch_no = $row['VOCH_NO'];
        $voch_date = $row['VOCH_DATE'];
        $agent_code = $row['AGENT_CODE'];
        $party_user_code = $row['PARTY_USER_CODE'];
        $narration= $row['NARRATION'];
        $dr_amt = $row['DR_AMOUNT'];
        $cr_amt = $row['CR_AMOUNT'];
        $bal = $row['BALANCE'];
        $index_no = $row['INDX_NO'];
        $check_no = $row['CHEQUE_NO'];
        $effect_code = $row['EFFECT_CODE'];


       $sql = "INSERT INTO axs_web_voch (VOCH_NO, VOCH_DATE, AGENT_CODE, PARTY_USER_CODE, NARRATION,  DR_AMOUNT, CR_AMOUNT, BALANCE, INDX_NO, CHEQUE_NO, EFFECT_CODE)

         VALUES ('$voch_no', '$voch_date', '$agent_code', '$party_user_code', '$narration', '$dr_amt', '$cr_amt', '$bal', '$index_no', '$check_no', '$effect_code')";//exit;

        mysql_query($sql) or die("Error: ".mysql_error());
    }


}
  }

  ?>

<form action="" method="post"
enctype="multipart/form-data">
<label for="file" style="margin-left: 18px;">Filename:</label>
<input type="file" name="file" id="file">
<br>
<input style="margin-left: 78px;" type="submit" name="submit" value="Uplaod DB">
</form>
<?php
}
?>

WINDOWS 上的 PHP 信息: https://www.dropbox.com/s/4qoqxu87ffwym84/PHP%20INFO%20on%20WINDOWS.png

当我进入 Linux 时,相同的代码无法运行...odbc_connect() 返回 NULL。

Linux 上的 PHP 信息: https://www.dropbox.com/s/a3vo6pd5pn1h4ha/PHP%20INFO%20on%20Linux.png

最佳答案

我可能会问一个显而易见的问题,但是您是否在 Linux 实例上安装了适用于 MS Access 的 ODBC 驱动程序?

关于php - odbc_connect 不适用于 unixODBC (LINUX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21232320/

相关文章:

JavaScript 使用 EventListener 和 jQuery 添加和删除 <tr>

php - 如何在 php 中捕获 file_get_contents() 的错误

php - 将两个查询组合成一个需要第一个查询中的值的查询

php - 阻止 sql 更新我的更新表单中的空白或空字段

linux - 通过在 bash 中附加来有条件地合并文件

linux - ./start-hbase.sh 不是独立启动的

oracle - 连接 Oracle 与 unixODBC : TNS:net service name is incorrectly specified

linux - Linux上的C++ Hello World

php - ODBC_CONNECT 游标类型与 PHP 中使用 freeTDS 和 unixODBC 的 SQLGetData 冲突

c - Linux 上的 gcc ODBC 未链接