为什么 mysqli 将字符串设置为 0?
Why does mysqli set string to 0?
我正在尝试用 POST 编辑到 PHP 的数据更新 table。它从表单中获取所有值并输入它们,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
我正在尝试用 POST 编辑到 PHP 的数据更新 table。它从表单中获取所有值并输入它们,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