作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了以下 php 代码:
if ($insert_client_stmt = $mysqli->prepare("INSERT INTO client (username, email, password) VALUES (?, ?, ?)")) {
$insert_client_stmt->bind_param('ssss', $username, $email, $password);
// Execute the prepared query.
if (! $insert_client_stmt->execute()) {
header('Location: ../error.php?err=Registration failure: INSERT');
}
}
$client_id = $mysqli->insert_id;
if ($insert_client_details_stmt = $mysqli->prepare("INSERT INTO client_addr (addr_id, client_id, client_name, contact_name) VALUES (?, ?, ?, ?)")) {
$insert_client_details_stmt->bind_param('ssss', $client_id, $_POST['company'], $_POST['contact']);
// Execute the prepared query.
if (! $insert_client_details_stmt->execute()) {
header('Location: ../error.php?err=Registration failure: INSERT');
}
}
header('Location: ./register_success.php');
在执行完该代码后,我的浏览器将我重定向到页面 register_success.php,但在我的数据库中我只有新客户端,client_addr 中的条目丢失了。什么会导致这种情况?我必须以某种方式重置 mysqli 吗?谢谢!
最佳答案
您的代码中有两个问题。
首先,您处理错误的方式是有史以来最糟糕的。从而让自己无法获得对您有帮助的有用错误消息。为了在 mysqli 中进行正确的错误处理,您必须摆脱所有这些无用的 if 并告诉 mysqli 在出现错误时抛出异常。
其次,错误本身很简单:您将三个变量传递到第二个查询中,而 INSERT 查询中有四个字段。您必须从查询中取出addr_id和相应的占位符
所以,代码是。
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$stmt = $mysqli->prepare("INSERT INTO client (username, email, password) VALUES (?,?,?)");
$stmt->bind_param('sss', $username, $email, $password);
$stmt->execute();
$client_id = $mysqli->insert_id;
$stmt = $mysqli->prepare("INSERT INTO client_addr (client_id, client_name, contact_name) VALUES (?,?,?)");
$stmt->bind_param('sss', $client_id, $_POST['company'], $_POST['contact']);
$stmt->execute();
header('Location: ./register_success.php');
关于php - 为什么当我相继有两个 mysqli 查询时,我只能执行第一个查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32808432/
在下图中 ([2]) 的第 20 行,您会看到“LEFT JOIN HUB_EMPLOYEES HM”,并且在加入 LINK_EMPLOYEES 后立即出现。 剩下的 HUB_EMPLOYEES 加入
我通过单击 Button 请求获取用户个人资料信息。我进行了调试,当我刚刚打开应用程序并单击按钮 onError 回调时,它显示“无效的用户 ID”。如果我第二次按 Button 它工作正常。从实验中
我是一名优秀的程序员,十分优秀!