Php 将行单元格更新为旧值
问题已修复:浏览器正在缓存GET请求。在jQuery中添加一个随机值可以解决这个问题。例如:Php 将行单元格更新为旧值,php,mysql,database,Php,Mysql,Database,问题已修复:浏览器正在缓存GET请求。在jQuery中添加一个随机值可以解决这个问题。例如: $.get(templateDir + "/inc/quote-update.php", { FlightID: FlightID, returnorigin: valuefrom, returndestination: valueto, returnpax: valuepax, returndate: valueret, "_": $.now()}, 我到处寻找解决办法,但找不到。我道歉,如果这已经
$.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应用程序
提前-谢谢 wpdev_航班是如何定义的?我想这可能和你的主键有关。。。运行脚本几次后,表的外观如何?对于单个FlightID,表中是否有多行?
如果出现一行以上,这可以解释该行为。如果存在与值匹配的行,则更新将不会执行任何操作。可能这很愚蠢,但是您的表中有
pax
和Rpax
字段,并且您正在更新php代码中名为returnpax
的字段
编辑:
$.get(templateDir + "/inc/quote-update.php", { FlightID: FlightID, returnorigin: valuefrom, returndestination: valueto, returnpax: valuepax, returndate: valueret, "_": $.now()},
为了共享这些信息,您可以在JQuery调用中使用
cache:false
设置来避免缓存。它的功能基本上与您使用$.now()
所做的相同,但对我来说听起来更干净。很高兴你解决了这个问题。这会给你带来任何错误吗?或者它只是保持行不变?mysql日志是否显示了一些内容?您是否尝试过不使用php直接运行更新
。我无法访问我的mysql日志:(在没有PHP的情况下,在phpmyadmin中执行此操作时,它始终有效。此外,如果您查看控制台,您可以看到AJAX也总是向PHP脚本发送正确的值,因此这里没有混淆。因此,我99%确定问题在于我上面的代码。通过phpmyadmin运行的查询与通过PHP发送的查询相同吗?如何它被定义了吗?它只是一个表,所以我不确定你的意思,我忘了对那个位进行置乱,如果你看我的PDO语句,上面说“sfshsfh”的位就是“wpdev_flights”因此,这可能会造成混乱。该表看起来与以前完全相同,没有重复或类似的内容,没有多行具有相同ID。他询问的是CREATE wpdev\u flights
语句,因此我们可以看到表字段的确切定义。我在phpmyadmin中手动创建了该表。我是否只需要从phpmyadmin复制并粘贴结构?这是我的结构,希望有帮助。字段“pax”和“Rpax”是问题所在,正如您所看到的,我试图修改如何设置pax字段。嗯。如果“从数据库表中选择COUNT(*),其中FlightID='someID'”总是给0或1我在这里不知所措。抱歉。好的地方!但我不认为这是问题所在。我已经向您展示了更新回程航班的代码,更新单程航班的代码是相同的,但不是Rpax它只是pax,我只是检查了更新的代码,它还显示了“pax”。因此,该代码是正确的,但由于某些原因,我为返回的pax编写了错误的代码。希望这是有意义的,并为混淆感到抱歉。编辑:我已在代码中修复了该代码,并在上面替换了它。谢谢。好的,您有两个类似的函数,一个更新pax
,另一个更新Rpax
,这两个函数都是正确编写的d发布代码中的错误只是一个输入错误?另外,我仍然想知道您是否有错误或只是一个“未触及”的行。是的:)给你一个活生生的例子好吗?来这里吧:在那次航班上,第一段的乘客号原来是4。我把它改成了6。我现在不能把它改回4。就我所能看到的而言,也没有错误消息。我试着来回更改了几次,它总是给我“更新成功”显示了正确的乘客数量。你是说在DB中情况有所不同吗?我可以看到你有,现在我更困惑了。目前它在“4”上。我现在无法将它改回6,无论我做什么。不,数据库也总是显示相同的。