php - 为什么mysqli将字符串设置为0?
问题描述
我正在尝试使用已发布到 PHP 的数据更新表。它从表单中获取所有值并输入它们,除了 emp_firstName。Emp_firstName 在数据库中始终更新为“0”,而其余的则获得正确的值。
emp_edit.php:
<?php
include '../part1/DBConnection.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!($result = $conn->prepare("UPDATE employees SET emp_firstName=?, emp_lastName=?, emp_middleName=?, emp_type=?, emp_initialLevel=?, emp_hireDate=?, emp_gender=?, emp_birthDate=?, emp_passwd=? WHERE emp_id=?"))) {
echo "Prepare failed: (" . $result->errno . ") " . $result->error;
}
if (!$result->bind_param("isssssssss", $emp_firstName, $emp_lastName, $emp_middleName, $emp_type, $emp_initialLevel, $emp_hireDate, $emp_gender, $emp_birthDate, $emp_passwd, $emp_id)) {
echo "Binding parameters failed: (" . $result->errno . ") " . $result->error;
}
// populate param vars
if (isset($_POST['emp_firstName'])) {
$emp_firstName = $_POST['emp_firstName'];
}
if (isset($_POST['emp_lastName'])) {
$emp_lastName = $_POST['emp_lastName'];
}
if (isset($_POST['emp_middleName'])) {
$emp_middleName = $_POST['emp_middleName'];
}
if (isset($_POST['emp_type'])) {
$emp_type = $_POST['emp_type'];
}
if (isset($_POST['emp_initialLevel'])) {
$emp_initialLevel = $_POST['emp_initialLevel'];
}
if (isset($_POST['emp_hireDate'])) {
$emp_hireDate = $_POST['emp_hireDate'];
}
if (isset($_POST['emp_gender'])) {
$emp_gender = $_POST['emp_gender'];
}
if (isset($_POST['emp_birthDate'])) {
$emp_birthDate = $_POST['emp_birthDate'];
}
if (isset($_POST['emp_passwd'])) {
$emp_passwd = $_POST['emp_passwd'];
}
if (isset($_POST['emp_id'])) {
$emp_id = $_POST['emp_id'];
}
$result->execute();
print_r($_POST);
$conn->close();
}
这是打印 POST 数组的结果(注意 firstName 未设置为 0):
Array ( [emp_id] => 2 [emp_firstName] => John [emp_lastName] => Doe [emp_middleName] => M [emp_type] => FT [emp_initialLevel] => 1 [emp_hireDate] => 2021-03-10 [emp_gender] => M [emp_birthDate] => 1990-02-27 [emp_passwd] => 123 )
结果:
2 | 0 | Doe | M | FT | 1 | 2021-03-10 | M | 1990-02-27 | 123
解决方案
您的$types
参数指定第一个字符应为整数:
isssssssss
^
|
Means integer
只需将其设为字符串即可:
ssssssssss
参考:https ://www.php.net/manual/en/mysqli-stmt.bind-param.php
推荐阅读
- javascript - 根据 React 中的索引和颜色词过滤文本
- r - 如何在R中的矩阵内绘制半圆?
- java - SolrException:无法从 ZK 加载集合
- python - 转换损坏的 .xls 的 Dytypes
- python - 如何在 Python 中将列表转换为 3 位数字?
- jmeter - 如何在 JMeter 中获取 RPS 指标并将它们发送到 InfluxDb?
- r - 错误:XLConnect 的包或命名空间加载失败
- sdk - 如何使用 cognos sdk、Spring Security 和 LDAP 实现 SSO
- android - 'adb devices' 找到我的 USB 设备,但 android studio 没有。只显示“加载设备”,运行时也说“没有找到目标设备”
- wamp - Wamp 错误 - aestan 托盘菜单配置文件在第 14 行包含语法错误: