从body onload事件我得到AJAX用PHP插入一行到数据库然后让PHP读取行计数。然后只使用PHP来获取行数。通过在页面上使用DOM到2个元素来显示计数。 Ajax计数总是比直接PHP计数高1。我在这里缺少什么?
include(' connect.inc.php')行将一个新的mysqli连接返回到$ con变量。
index.php - 使用body onload事件启动insertEvent函数。
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<!doctype html>
<html lang ="en">
<head>
<meta charset="utf-8" />
<title>Query Test</title>
</head>
<body onload='insertEvent()'>
<a id='ajaxphp'; >AJAX + PHP Row Count:</a><br>
<a id='straightphp'; >Straight PHP Row Count:</a>
</body>
<script type="text/javascript">
function insertEvent()
{
$.ajax({
url: 'insertEvent.php',
type: 'post',
data: {'x': '1', 'y': '1'},
success: function(data) {
document.getElementById("ajaxphp").innerHTML= "AJAX + PHP Row Count: " + data;
}
});
var numrows = 0;
<?php
include('connect.inc.php');
$con = ConnectToDatabase();
$query = "SELECT * FROM events ORDER by id ASC";
if ($stmt = $con->prepare($query))
{
// execute query
$stmt->execute();
//Transfers a result set from the last query
$stmt->store_result();
// number of results returned
$num_rows = ($stmt->num_rows);
echo "numrows = $num_rows;";
}
mysqli_close($con);
?>
document.getElementById('straightphp').innerHTML = "Straight PHP Row Count: " + numrows;
}
</script>
insertEvent.php - 用于AJAX调用的PHP
<?php
include('connect.inc.php');
$con = ConnectToDatabase();
$x = $_POST['x'];
$y = $_POST['y'];
$query = "INSERT INTO events (x, y) VALUES (?,?)";
if ($stmt = $con->prepare($query))
{
// bind parameters for markers
$stmt->bind_param("ss", $x, $y);
// execute query
$stmt->execute();
//Transfers a result set from the last query
$stmt->store_result();
}
$query = "SELECT * FROM events ORDER by id ASC";
if ($stmt = $con->prepare($query))
{
// execute query
$stmt->execute();
//Transfers a result set from the last query
$stmt->store_result();
// number of results returned
$num_rows = ($stmt->num_rows);
}
mysqli_close($con);
echo $num_rows;
?>