Php代码不向数据库发送查询

时间:2014-07-22 23:23:14

标签: php mysql sql ajax

我正在尝试使用ajax更新我的数据库,但我似乎无法理解为什么php代码不会更新数据库。脚本:

function Insert () {
        if (XMLHttpRequestObject) {
            XMLHttpRequestObject.open("POST","list_insert.php");
            XMLHttpRequestObject.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
            XMLHttpRequestObject.onreadystatechange = function() {
                if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200) {
                    var returnedData = XMLHttpRequestObject.responseText;
                    var messageDiv = document.getElementById('messageDiv');
                    messageDiv.innerHTML = returnedData;
                }
            }
            var item = document.getElementById('items').value;
            var desc = document.getElementById('description').value;

            var data = item + '|' + desc + '|';

            XMLHttpRequestObject.send("data=" + data);
        }
        return false;
    }

这是list_insert的php代码:

<?php
    include "function_list.php";
    $myData = $_POST['data'];
    $datetime = date('Y-m-d H:i:s');
    list($items,$description) = explode ('|',$myData);

    $statement = "INSERT INTO record ";
    $statement .= "(items,description) ";
    $statement .= "VALUES (";
    $statement .=  "'".$items."', '".$description."')";
    print $statement;
    insert($statement);
    print "done";
?>

我的php函数插入到db(function_list)中:

<?php
    $con=mysqli_connect("localhost","shop");
    if (mysqli_connect_errno()) {
        echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    function insert($statement) {
        global $con;
        mysqli_query($con,$statement);
    }
?>

当我打印出语句时,查询是正确的(我已经通过手动复制粘贴它在mysql中验证了这一点)。我认为问题在于我的插入功能。

感谢任何帮助, 谢谢。

3 个答案:

答案 0 :(得分:0)

首先,所有mysql语句必须以分号结尾。

其次,您确定$items$description是您希望他们拥有的值吗?他们有没有未转动的报价?

此外,通常您会将每个字段作为单独的值发送,如下所示:

var item = document.getElementById('items').value;
var desc = document.getElementById('description').value;
XMLHttpRequestObject.send("items=" + item + "&desc=" + desc);


$$items = $_POST['items'];
$description = $_POST['desc'];

答案 1 :(得分:0)

默认情况下,mysql的用户名为root,密码为空,即使您没有提示输入,也默认设置。

答案 2 :(得分:0)

我认为这可能是问题

在你的全局变量$con中,letz说你放了这个

$con = new mysqli("host", "user", "pwd", "dbname"); 

然后

function insert($statement) {
    $con->query($statement);
    $con->close();
}