用 AJAX 更新 MySQL Table
Updating MySQL Table with AJAX
我正在尝试为 MySQL table 中的项目发送一个值并将其 "availability" 列递增一个。
按下按钮会执行以下 onclick 函数:
function updateStuff() {
// Data validation for string variable val
// coordinating to one of the items in the SQL table
var xmlHttp = false;
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
xmlHttp = new XMLHttpRequest();
}
if(!xmlHttp)
alert("Error : Cannot create xmlHttp object");
else{
if(xmlHttp.readyState == 0 || xmlHttp.readyState == 4){
xmlHttp.open("GET","update.php?val=" + val, true);
xmlHttp.send();
}
else{
setTimeout(updateStuff,1000);
}
}
}
update.php 看起来像这样:
<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<response>';
$item = $_GET['val'];
echo 'You selected ' . $item;
$server = "localhost";
$user = "root";
$pass = "";
$datab = "checkout";
// Connect to database
$db = mysqli_connect($server, $user, $pass, $datab);
// Check connection
if (mysqli_connect_errno()){
echo "Could not connect to database: " . mysqli_connect_error();
}
$results = mysqli_query($db,"SELECT * FROM inventory WHERE item = " . $item);
$available = $results['available'] + 1;
$result = mysqli_query($db, "UPDATE inventory SET available = " . $available . " WHERE item = " + $item);
// Close connection
mysqli_close($db);
echo '</response>';
?>
我认为这通常是正确的,不幸的是我在执行代码时没有得到 table 更新。我对变量 val
的验证有 100% 的信心,并且对 updateStuff()
相当有信心,但我不太确定我是否通过放置 [=17= 来正确地处理服务器端的东西] 在 response
个标签内。
编辑:我已经进行了 asparatu 给出的语法更正,但问题仍然存在。
更新查询错误
$result = mysqli_query($db, "UPDATE inventory SET available = available + 1 WHERE item = " + $item);
您从哪里获得当前的可用号码?
您需要一个 select 查询当前项目并获取当前可用数量的语句,然后您可以向其中添加一个。
$results = mysqli_query($db,"SELECT * FROM inventory WHERE item = " . $item);
$available = $results['available'] + 1;
$result = mysqli_query($db, "UPDATE inventory SET available = " . $available . " WHERE item = " . $item);
那应该行得通..
试试这个来更新查询:
$result = "UPDATE inventory SET available = "' .$available. '" WHERE item = "' .$item. '"";
if (mysqli_query($db, $result)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}
我正在尝试为 MySQL table 中的项目发送一个值并将其 "availability" 列递增一个。
按下按钮会执行以下 onclick 函数:
function updateStuff() {
// Data validation for string variable val
// coordinating to one of the items in the SQL table
var xmlHttp = false;
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else{
xmlHttp = new XMLHttpRequest();
}
if(!xmlHttp)
alert("Error : Cannot create xmlHttp object");
else{
if(xmlHttp.readyState == 0 || xmlHttp.readyState == 4){
xmlHttp.open("GET","update.php?val=" + val, true);
xmlHttp.send();
}
else{
setTimeout(updateStuff,1000);
}
}
}
update.php 看起来像这样:
<?php
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>';
echo '<response>';
$item = $_GET['val'];
echo 'You selected ' . $item;
$server = "localhost";
$user = "root";
$pass = "";
$datab = "checkout";
// Connect to database
$db = mysqli_connect($server, $user, $pass, $datab);
// Check connection
if (mysqli_connect_errno()){
echo "Could not connect to database: " . mysqli_connect_error();
}
$results = mysqli_query($db,"SELECT * FROM inventory WHERE item = " . $item);
$available = $results['available'] + 1;
$result = mysqli_query($db, "UPDATE inventory SET available = " . $available . " WHERE item = " + $item);
// Close connection
mysqli_close($db);
echo '</response>';
?>
我认为这通常是正确的,不幸的是我在执行代码时没有得到 table 更新。我对变量 val
的验证有 100% 的信心,并且对 updateStuff()
相当有信心,但我不太确定我是否通过放置 [=17= 来正确地处理服务器端的东西] 在 response
个标签内。
编辑:我已经进行了 asparatu 给出的语法更正,但问题仍然存在。
更新查询错误
$result = mysqli_query($db, "UPDATE inventory SET available = available + 1 WHERE item = " + $item);
您从哪里获得当前的可用号码?
您需要一个 select 查询当前项目并获取当前可用数量的语句,然后您可以向其中添加一个。
$results = mysqli_query($db,"SELECT * FROM inventory WHERE item = " . $item);
$available = $results['available'] + 1;
$result = mysqli_query($db, "UPDATE inventory SET available = " . $available . " WHERE item = " . $item);
那应该行得通..
试试这个来更新查询:
$result = "UPDATE inventory SET available = "' .$available. '" WHERE item = "' .$item. '"";
if (mysqli_query($db, $result)) {
echo "Record updated successfully";
} else {
echo "Error updating record: " . mysqli_error($db);
}