gpt4 book ai didi

php - MySQL 不执行更新

转载 作者:行者123 更新时间:2023-11-29 06:40:54 25 4
gpt4 key购买 nike

我正在尝试提交 AJAX 请求来更新 MySQL 数据库中的一行。每当我尝试通过 AJAX 提交请求时,行都不会更新,但每当我直接在数据库中测试查询和参数值时,行都会更新。

这是标记和 AJAX 的样子:

$('body').on('change', '.cb_exempt', function() {
var checked = this.checked;
var business_id = $(this).attr('data-id');
var jqxhr = $.post("php/update_exempt.php", {
exempt: checked,
business_id: business_id
})
.done(function(data) {
alert("The business successfully updated");
})
.fail(function(jqXHR, textStatus, errorThrown) {
alert(errorThrown);
});
});
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.min.js"></script>
<table id="table_businesses" role="grid" aria-describedby="table_businesses_info">
<thead>
<tr role="row">
<th aria-controls="table_businesses">Name</th>
<th aria-controls="table_businesses">Active</th>
<th aria-controls="table_businesses">Exempt from Billing</th>
<th aria-controls="table_businesses">Billing History</th>
</tr>
</thead>
<tbody>
<tr role="row" class="odd">
<td>[removed]</td>
<td><input class="mx-auto cb_active" checked="checked" data-id="1" type="checkbox"></td>
<td><input class="mx-auto cb_exempt" data-id="1" type="checkbox"></td>
<td><a href="business.php?business_id=1">View Billing History</a></td>
</tr>
</tbody>
</table>

这就是我的 PHP 的样子:

<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST' || empty($_POST['exempt']) || empty($_POST['business_id'])) {
// Get the database object from the configuration file
$db;
try {
$db = include('config_consumer_database.php');
} catch(PDOException $ex) {
throw new Exception('Database exception.');
}

// Update the business' exempt status
$stmt = $db->prepare('UPDATE IGNORE `business` SET `is_exempt` = :exempt WHERE `business_id` = :business_id;');

// Execute the query passing the new exempt value and the business_id
$stmt->execute(array(
':exempt' => $_POST['exempt'],
':business_id' => $_POST['business_id']
));
} else {
throw new Exception('The server understood the request, but is refusing to fulfill it. Authorization will not help and the request SHOULD NOT be repeated.');
}
?>

正如我所提到的,每当我尝试使用 AJAX 请求时,它都不会工作,但我已经回显了查询字符串以及 $_POST ,以便我可以复制/粘贴输出直接在我的 MySQL 数据库中确认查询将运行并且它确实运行。

更新

我确实注意到我的 PHP 代码存在问题,因为我在条件语句中使用 OR 语句而不是 AND 语句,因此我更改了它。这并没有解决我的问题。

我还采纳了使用 issetstrlen($_POST['...']) > 0 而不是 empty 的建议。我尝试了两种方法,但都没有解决我的问题。

我还尝试使用常规参数而不是命名参数,并将 $_POST 直接传递到执行中,如下所示:

// Update the business' exempt status
$stmt = $db->prepare('UPDATE IGNORE `business` SET `is_exempt` = ? WHERE `business_id` = ?;');

// Execute the query passing the new exempt value and the business_id
$stmt->execute(array_values($_POST));

这也没有解决我的问题。

每当我检查 JavaScript 控制台日志时,提交 AJAX 请求后都没有显示任何内容。每当我检查 error.txt 日志 (xampp > apache > messages > error.txt) 时,提交 AJAX 请求后什么也没有显示。

$.POST 请求中发送的参数符合我的预期。

最佳答案

您是否检查了 mysql 查询日志以确保正在执行的查询是什么。

您可以通过查询查看sql日志文件:

show variables like '%log%';

您可以通过执行以下命令启用sql日志:

set global general_log=1;

可以通过以下方式设置日志文件:

设置全局general_log_file='/var/log/mysql/mysql.log';

请检查一次sql日志。

关于php - MySQL 不执行更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51659661/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com