我正在尝试使用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中验证了这一点)。我认为问题在于我的插入功能。
感谢任何帮助, 谢谢。
答案 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();
}