问题已解决:浏览器正在缓存GET请求。在jQuery中添加随机值可以解决问题。 E.G:
$.get(templateDir + "/inc/quote-update.php", { FlightID: FlightID, returnorigin: valuefrom, returndestination: valueto, returnpax: valuepax, returndate: valueret, "_": $.now()},
我到处寻找解决方案,但我找不到它。如果之前已经发布过,我道歉。
问题是这个。当用户访问网站时,他们会搜索航班。详细信息存储在数据库中。这很好。
然后,用户可以更改并添加到他们的航班。这种方法很好 - 除了乘客号码。
出于某种原因,我遇到了更新乘客数量的奇怪错误。如果您将值更改为 之前 的值,会发生什么情况,它不会更新。如果您将其更改为 以前不是 的值,则会成功更新。
例如,如果用户最初搜索6名乘客的航班,则将其更改为4名乘客 - 然后他们无法将其更改为6名乘客。但是,它们可以将其更改为3,或5,或7等等。
这就是我在phpmyadmin中设置字段的方式:
4 pax bigint(20) UNSIGNED No None
这是我的代码:
<?php
$FlightID = isset($_GET["FlightID"]) ? $_GET['FlightID'] : null;
$db = new PDO('mysql:host=localhost;dbname=databasename', 'database-table', 'afgafha', array(PDO::ATTR_EMULATE_PREPARES => false,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
// Start a counter for errors
$error = 0;
if (!is_null($FlightID)) {
$stmt = $db->prepare("SELECT * FROM database-table WHERE FlightID = ?");
$stmt->execute(array($FlightID));
if ($stmt->rowCount() <= 0){
// Do Nothing //
} elseif ($stmt->rowCount() == 1){
$origin = isset($_GET['origin']) ? $_GET['origin'] : null;
$destination = isset($_GET['destination']) ? $_GET['destination'] : null;
$pax = isset($_GET['pax']) ? $_GET['pax'] : null;
$depdate = isset($_GET['depdate']) ? $_GET['depdate'] : null;
if (!is_null($origin) && !is_null($destination) && !is_null($pax) && !is_null($depdate)){
$data = array($origin, $destination, $depdate, $pax, $FlightID);
$stmt = $db->prepare("UPDATE database-table SET origin=?, destination=?, depdate=?, pax=? WHERE FlightID=?");
$stmt->execute($data);
$affected_rows = $stmt->rowCount();
echo $affected_rows.' were affected';
print_r ($data);
} else {
// Validation failed
$error++;
}
} else {
$error++;
}
} else {
$error++;
}
if($error > 0) {
}
?>
有人有什么想法吗?如果这是一个真正的noob问题,我很抱歉,但这是我第一次自己制作PHP / SQL应用程序。
提前 - 谢谢!
答案 0 :(得分:0)
如何定义wpdev_flights?我想这可能与您的主键有关...在您运行脚本几次后,表格如何?表中是否有一行FlightID? 如果存在多于一行,则可以解释该行为。如果存在与值匹配的行,UPDATE将不会执行任何操作。
答案 1 :(得分:0)
也许这很愚蠢,但您的表中有pax
和Rpax
个字段,并且您正在更新php代码中名为returnpax
的字段。
修改强>
只是为了分享这些信息,您可以在JQuery调用中使用cache: false
设置来避免缓存。它与$.now()
基本相同,但对我来说听起来更干净。无论如何,很高兴你解决了。