php - 除非所有列都存在,否则 Mysqli INSERT 不起作用

标签 php mysql mysqli centos

我正在开发一个网站,我刚刚将其数据库从运行 CentOS 6 的服务器移动到运行 CentOS 7 的服务器,现在我的查询不起作用,除非查询中存在所有列。

enter image description here

$sql = 'INSERT INTO users(name, user, huser, hpass, mail, salt) VALUES (?, ?, ?, ?, ?, ?)';

/* Prepare statement */
$stmt = $conn->prepare($sql);
if($stmt === false) {
  trigger_error('Wrong SQL: ' . $sql . ' Error: ' . $conn->errno . ' ' . $conn->error, E_USER_ERROR);
}


/* Bind parameters. Types: s = string, i = integer, d = double,  b = blob */
$stmt->bind_param('ssssss', $name, $user, $huser, $hpass, $email, $salt);

/* Execute statement */
$stmt->execute();
mysqli_close($conn);
echo "Register succeeded! Please wait...";

该脚本运行良好,唯一的更改是 mysql 服务器地址和凭据。如果我添加一些虚拟变量并完成查询中的所有列,它就可以正常工作。

这是我需要更改的设置吗?我想尽量减少查询,空列将在稍后使用。这是不好的做法吗?更改服务器破坏了这个事实让我认为这要么是 mysqli 版本的差异,要么是 mysqld 的配置的差异。

最佳答案

This script was running fine

我觉得这很难相信。您已指定 10 个属性都不能为 null,只有 2 个属性具有默认值(id、access),并且您的脚本仅在 INSERT 上设置其中的 6 个值。

如果您已指定值不得为 NULL,则必须指定默认值或设置一个值。

如果脚本在旧服务器上运行,它必须具有与上述不同的架构。

关于php - 除非所有列都存在,否则 Mysqli INSERT 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35171368/

相关文章:

php - 如何获取其他表使用codeigniter的对象的行数

php - MYSQL 更新记录时出错 : Can't reopen table (Temporary table)

PHP MySQL - 对字母和数字字符串进行排序

php - IF EXISTS UPDATE ELSE INSERT 使用 mysql

php - 为什么这个透明的 PNG 在使用 GD 组合时会产生边框?

php - 在 Symfony2 上创建多色选择框

php - 在模板的 Symfony 翻译中使用 Twig 变量

php - 平均分割日期范围

php - 使用PHP返回mysql存储过程的输出参数

php - 最简单的 MySQL 到 MySQLi 的转换