首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从PHP500个内部服务器错误-将数据插入VFP9数据库

问从PHP500个内部服务器错误-将数据插入VFP9数据库
EN

Stack Overflow用户
提问于 2018-07-04 22:56:43
回答 2查看 95关注 0票数 0

我试图用PHP编写一个API脚本,将记录插入到Foxpro 9数据库中,但是当调用API时,我得到了"500内部服务器错误“消息。我是Foxpro开发人员,但对PHP非常陌生。

我在这个网站和其他网站上经历了几个关于这个主题的问题和评论,并且已经实现了几乎所有建议的解决方案,但都没有效果。以下是我到目前为止所采取的步骤:

  1. 安装并配置了IIS和PHP。(phpinfo()正确显示)
  2. VFP 9已完全安装。(使用VFPOLEDB驱动程序)
  3. 我已经分别完全清除了浏览数据。

我不知道问题出在哪里(因为"500内部服务器错误“消息可能是PHP脚本或PHP配置的问题。有人可以看看下面的PHP脚本来帮助解决这个问题吗?

蒂娅。

代码语言:javascript
复制
<?php 
// required headers
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

// database connection
$conn = new COM("ADODB.Connection");
$conn->Open("Provider=VFPOLEDB.1;Data Source=C:\inetpub\wwwroot\sonreceipt\RECEIPT.DBC;Collating Sequence=Machine");

// get posted data
$data = json_decode(file_get_contents("php://input"));

// set payment values received
$jrefnum = $data->refnum;
$jpaydate = $data->paydate;
$jcustname = $data->custname;
$jcustemail = $data->custemail;
$jdemandno = $data->demandno;
$jdemanddate = $data->demanddate;
$jamount = $data->amount;
$jrecpdesc = $data->recpdesc;
$jpaybank = $data->paybank;
$jpayref = $data->payref;

// create the payment
if(create()){
    echo "Payment was created.";
} 

// if unable to create the payment, tell the user
else {
    echo "Unable to create payment.";
}

// create payment
function create(){

   // query to insert record
    $query = "INSERT INTO SON2100 (refnum, paydate, custname, custemail, demandno, demanddate, amount, recpdesc, paybank, payref)  
                VALUES ($srefnum, $spaydate, $scustname, $scustemail, $sdemandno, $sdemanddate, $smount, $srecpdesc, $spaybank, $spayref)";

    // prepare query
    global $conn
    $stmt = $conn->prepare($query);

    // sanitize
    global $jrefnum, $jpaydate, $jcustname, $jcustemail, $jdemandno, $jdemanddate, $jamount, $jrecpdesc, $jpaybank, $jpayref;
    $srefnum=htmlspecialchars(strip_tags($jrefnum));
    $spaydate=htmlspecialchars(strip_tags($jpaydate));
    $scustname=htmlspecialchars(strip_tags($jcustname));
    $scustemail=htmlspecialchars(strip_tags($jcustemail));
    $sdemandno=htmlspecialchars(strip_tags($jdemandno));
    $sdemanddate=htmlspecialchars(strip_tags($jdemanddate));
    $samount=htmlspecialchars(strip_tags($jamount));
    $srecpdesc=htmlspecialchars(strip_tags($jrecpdesc));
    $spaybank=htmlspecialchars(strip_tags($jpaybank));
    $spayref=htmlspecialchars(strip_tags($jpayref));

    // execute query
    if($stmt->execute()){
        return true;
    } 

    return false;
}
?>

下面是调用API的javascript。

代码语言:javascript
复制
<script>
function sendData(data) {
    var XHR = new XMLHttpRequest();
    var jsonData = {"refnum":"1111-2222-3333", "paydate":"01-06-2018", "custname":"O. A. BECKLEY VENTURES", "custemail":"beckleyventures@gmail.com", "demandno":"DEMAND NOTE 001", "demanddate":"01-06-2018", "amount":"15550.00", "recpdesc":"SONCAP", "paybank":"ZENITH BANK PLC", "payref":"0123456789"};

    // Define what happens on successful data submission
    XHR.addEventListener('load', function(event) {
        window.alert('Yeah! Data sent and response loaded.');
    });

    // Define what happens in case of error
    XHR.addEventListener('error', function(event) {
        window.alert('Oops! Something goes wrong.');
    });

    // Set up our request
    XHR.open('POST', 'http://localhost/sonreceipt/api/create_payment.php', true);

    // Add the required HTTP header for form data POST requests
    XHR.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');

    // Finally, send our data.
    XHR.send(jsonData);
}
</script>

以下是已编辑的脚本,但仍然无法工作。如前所述,我还不熟悉PHP。

代码语言:javascript
复制
<?php 

// required headers
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With");

// database connection
$conn = new COM("ADODB.Connection");

try {
    $conn->Open('Provider=VFPOLEDB.1;DSN=RECEIPT;Mode=ReadWrite;Password="";Collating Sequence=MACHINE;');
    if (! $conn) {
       throw new Exception("Could not connect!");
    }
}
catch (Exception $e) {
    echo "Error (File:): ".$e->getMessage()."<br>";
}

if (!$conn)
    {exit("Connection Failed: " . $conn);}
echo "Connection Sucessfull";

// get posted data
$data = json_decode(file_get_contents("php://input"));

// set payment values received
$jrefnum = $data->refnum;
$jpaydate = $data->paydate;
$jcustname = $data->custname;
$jcustemail = $data->custemail;
$jdemandno = $data->demandno;
$jdemanddate = $data->demanddate;
$jamount = $data->amount;
$jrecpdesc = $data->recpdesc;
$jpaybank = $data->paybank;
$jpayref = $data->payref;

// create the payment
if(create()){
    echo "Payment was created.";
} 

// if unable to create the payment, tell the user
else {
    echo "Unable to create payment.";
}

// create payment
function create(){

    global $conn;
    global $jrefnum, $jpaydate, $jcustname, $jcustemail, $jdemandno, $jdemanddate, $jamount, $jrecpdesc, $jpaybank, $jpayref;

    // sanitize
    $srefnum=htmlspecialchars(strip_tags($jrefnum));
    $spaydate=htmlspecialchars(strip_tags($jpaydate));
    $scustname=htmlspecialchars(strip_tags($jcustname));
    $scustemail=htmlspecialchars(strip_tags($jcustemail));
    $sdemandno=htmlspecialchars(strip_tags($jdemandno));
    $sdemanddate=htmlspecialchars(strip_tags($jdemanddate));
    $samount=htmlspecialchars(strip_tags($jamount));
    $srecpdesc=htmlspecialchars(strip_tags($jrecpdesc));
    $spaybank=htmlspecialchars(strip_tags($jpaybank));
    $spayref=htmlspecialchars(strip_tags($jpayref));

   // query to insert record
    $query = "INSERT INTO SON2100 (refnum, paydate, custname, custemail, demandno, demanddate, amount, recpdesc, paybank, payref) 
      VALUES ($srefnum, $spaydate, $scustname, $scustemail, $sdemandno, $sdemanddate, $smount, $srecpdesc, $spaybank, $spayref)";

   // prepare query
    $stmt = $conn->prepare($query);

    // execute query
    if($stmt->execute()){
        return true;
    } 

    return false;
}
?>
EN

回答 2

Stack Overflow用户

发布于 2018-07-04 23:03:19

您还没有在SQL的value部分中声明create()函数中使用的变量,并且缺少一个分号

代码语言:javascript
复制
//  you have
global $conn

// should be
global $conn ;
票数 0
EN

Stack Overflow用户

发布于 2018-07-05 20:54:04

使用

代码语言:javascript
复制
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

找出你的错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51181572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档