gpt4 book ai didi

php - 尝试让 php 准备使用两个不同的表

转载 作者:行者123 更新时间:2023-11-29 12:05:57 25 4
gpt4 key购买 nike

我正在尝试执行第一个查询,将其发送到两个不同的数据库表。我正在尝试更新用户和 user_request 表中的“组”。我从 AJAX 调用中获取一个 id,我使用该 id 来查找我尝试更新的记录。

在用户表中,id 需要找到 id 字段。在 user_requests 表中,id 需要与 user_id 关联。

这是我试图更改的行,以使其发送到两个不同的数据库表..

$stmt = $con->prepare("UPDATE users,user_reuqests SET `group`=? WHERE id, user_id=?");

我收到一条错误响应,指出错误是由 user_id 部分引起的。

$approved_id = $_POST['id'];
$change_group = $_POST['update_group'];

$con = mysqli_connect("localhost","root","","db");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $con->prepare("UPDATE users,user_reuqests SET `group`=? WHERE id, user_id=?");
if ( !$stmt || $con->error ) {
// Check Errors for prepare
die('User Group update prepare() failed: ' . htmlspecialchars($con->error));
}
if(!$stmt->bind_param('ii', $change_group, $approved_id)) {
// Check errors for binding parameters
die('User Group update bind_param() failed: ' . htmlspecialchars($stmt->error));
}
if(!$stmt->execute()) {
die('User Group update execute() failed: ' . htmlspecialchars($stmt->error));
}

我做错了什么,无法使其正常工作和结合?

更新:在我更改了准备部分后,我现在在准备好的语句的bind_param部分中收到错误。我该如何改变这个?

$stmt = $con->prepare("UPDATE users,user_requests SET users.group=?, user_requests.group=? WHERE users.id=? AND user_requests.user_id=?");

最佳答案

首先,查询中的 WHERE 子句没有为第一个约束指定 id。

其次,group 不明确,当您尝试更新它时会导致错误。

您的查询应为:UPDATE users,user_reuqests SET users.group=?, user_request.group=?哪里 users.id=? AND user_request.user_id=?

现在,由于我们已经使用更多占位符更新了查询,因此我们需要将这些附加占位符绑定(bind)到 PHP 变量。新查询同时使用 $change_group$approved_id 两次 - 因此我们需要将它们分别绑定(bind)两次。

if(!$stmt->bind_param('iiii', $change_group, $change_group, $approved_id, $approved_id)) {
// Check errors for binding parameters
die('User Group update bind_param() failed: ' . htmlspecialchars($stmt->error));
}

当一切都说完了,最终的代码应该如下所示:

$approved_id = $_POST['id'];
$change_group = $_POST['update_group'];

$con = mysqli_connect("localhost","root","","db");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$stmt = $con->prepare("UPDATE users,user_reuqests SET users.group=?, user_request.group=? WHERE users.id=? AND user_request.user_id=?");
if ( !$stmt || $con->error ) {
// Check Errors for prepare
die('User Group update prepare() failed: ' . htmlspecialchars($con->error));
}
if(!$stmt->bind_param('iiii', $change_group, $change_group, $approved_id, $approved_id)) {
// Check errors for binding parameters
die('User Group update bind_param() failed: ' . htmlspecialchars($stmt->error));
}
if(!$stmt->execute()) {
die('User Group update execute() failed: ' . htmlspecialchars($stmt->error));
}

有关将参数绑定(bind)到 mysqli_stmt 的更多信息:http://php.net/manual/en/mysqli-stmt.bind-param.php

关于php - 尝试让 php 准备使用两个不同的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31480108/

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