0

我没有任何其他选择,只能再次在这里问......问题在过去的 5 个小时里让我丧命。我得到了调用 javascript 函数的按钮,然后 javascript 打开另一个 php 页面并插入 MySQL 数据库。

HTML 代码:

<ul>
<li id="ConfirmButton" name="Insert" onclick="GetAllIDs()"><a>Potvrdi</a></li>
</ul>

Javascript代码:

var request_type;
var browser = navigator.appName;
if (browser == "Microsoft Internet Explorer") {
request_type = new ActiveXObject("Microsoft.XMLHTTP");
}
else {
request_type = new XMLHttpRequest();
}

var http = request_type;
http.open('get', 'insert.php?MatchID='+MatchID+'&TipID='+TipID+'&UserID=' + 1,true);
http.send(null); 

PHP代码:

include('config.php');
$matchID = $_GET['MatchID'];
$tipID = $_GET['TipID'];
$userID = $_GET['UserID'];

// Escape User Input to help prevent SQL Injection  
$MatchID = mysql_real_escape_string($matchID); 
$TipID = mysql_real_escape_string($tipID); 
$UserID = mysql_real_escape_string($userID); 

$insertTicket_sql = "INSERT INTO 
betslips(DateTime,MatchID,TipID,UserID)
VALUES(".$MatchID.",".$TipID.",'".date("Y-m-d H:i:s")."',".$UserID.")";
$insertTick= mysql_query($insertTicket_sql) or die(mysql_error());

因此,在我运行此代码并使用断点之后,我在我的 php 代码中看到了我通过表单正常发送的所有参数,并且它们都在那里,但是当我到达代码时,$insertTick我得到错误 web 服务器意外退出,重新启动新实例。

有没有人以前见过这个问题,我该如何处理?

谢谢

4

1 回答 1

0

以前有人见过这个问题吗?

不是我,我不使用 mysql_* 函数。

您的 INSERT 查询参数和值不匹配。

因此,我将您的示例代码移植到了 PDO 中,也许它有些兴趣:

<?php 
//PDO Connect
try{
    $con = new PDO('mysql:host=127.0.0.1;dbname=yourDB','root','password');
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $con->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE,PDO::FETCH_ASSOC);
}catch (Exception $e){
    die('Cannot connect to database. Details:'.$e->getMessage());
}

//Check that the variables are set
if(isset($_GET['MatchID']) && isset($_GET['TipID']) && isset($_GET['UserID'])){

    //Prepare your query
    $query = $con->prepare("INSERT INTO betslips (DateTime,MatchID,TipID,UserID)
                            VALUES ('".date("Y-m-d H:i:s")."', :matchID, :tipID, :userID)");

    //Bind your values with the placeholders
    $query->bindParam(":matchID", $_GET['MatchID']);
    $query->bindParam(":tipID", $_GET['TipID']);
    $query->bindParam(":userID", $_GET['UserID']);

    //Execute
    $query->execute();
    die('Success!');
}else{
    die('Error: Parameter not set.');
}
?>
于 2012-08-26T00:07:09.287 回答