0

我有一个 JS 脚本:

function addTasteingNote(userID,beerID)
    {
        //get values
        var note = $('#note1').val();


        var ajaxSettings = {
        type: "POST",
        url: "a.php",
        data: "u="+userID+"&b="+beerID+"&n="+note,
        success: function(data){


     } ,
        error: function(xhr, status, error) { alert("error: " + error); }

    };          

        $.ajax(ajaxSettings);

        return false;
    }

添加到数据库的 php 脚本是:

 <?php
    error_log("starting code"); 
    require_once('connect.inc.php');

            $u = $_GET['uID'];
            $b = $_GET['bID'];
            $n = $_GET['n'];

            //do some checks etc

            $db = new myConnectDB();
            error_log("Successfully created DB");   

            $query3 = "INSERT INTO x (userID,beerID,note) VALUES ($u, '$b', '$n')";

            error_log($query3);

            $result = $db->query($query3);
?>

问题是错误日志显示没有任何内容放入查询中:

[01-Nov-2013 23:40:29] Successfully created DB
[01-Nov-2013 23:40:29] INSERT INTO x (userID,beerID,note) VALUES (, '', '')

我已经在 ajax 调用成功时发出警报,所以我知道值正在通过......

4

2 回答 2

1

您需要提供类似的数据

var ajaxSettings = {
    type: "POST",
    url: "a.php",
    data: {u:userID,b:beerID,n:note},
    success: function(data){


 }

data不会是查询字符串,并且由于您通过 ajax 发布值,因此您只需要通过 POST 获取它们,例如

$u = $_POST['u'];
$b = $_POST['b'];
$n = $_POST['n'];

你的查询应该像

$query3 = "INSERT INTO x (userID,beerID,note) VALUES ('".$u."', '".$b."', '".$n."')";

最好在变量中使用转义字符串POST来防止 SQL 注入。

于 2013-11-02T04:46:32.423 回答
0

您正在使用 post 方法,因此,您需要使用$_POSTor$_REQUEST代替$_GET

$u = $_REQUEST['u'];
$b = $_REQUEST['b'];
$n = $_REQUEST['n'];
于 2013-11-02T04:49:15.867 回答