Я работал над веб-сайтом, я просто переместил его базу данных с сервера, на котором запущена CentOS 6, на сервер, на котором работает CentOS 7, и теперь мои запросы не работают, если не присутствуют все столбцы в запросе.Mysqli INSERT не работает, если не присутствуют все столбцы
$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.
Вы действительно не должны использовать свои собственные соли для хэшей паролей, и вам действительно нужно использовать встроенные функции PHP (http://jayblanchard.net/proper_password_hashing_with_PHP.html) для защиты паролей. Если вы используете версию PHP менее 5.5, вы можете использовать 'password_hash()' [пакет совместимости] (https://github.com/ircmaxell/password_compat). –
Вы не выполняете свой запрос. –
Если это ваш код, связанный с этим запросом, то @JayBlanchard верен. – RiggsFolly