Intereting Posts
Magento – настраиваемый модуль не работает Как сохранить имя загруженного файла в базе данных поиск вертикальных регулярных выражений php Foreach что-то делать через x раз? Создание выпадающего списка со значениями из таблицы DB Тестирование, если сеть в записи cidr перекрывает другую сеть PHP Предупреждение: Неизвестно: произошла ошибка при закрытии оператора в Unknown в строке 0 file_get_contents – также получить фотографии API-интерфейс Analytics – Получить данные MCF = пустые результаты PHP Преобразование mysql в mysqli glob () не может найти имена файлов с многобайтовыми символами в Windows? PHP – автоматическая обновляющая страница Как установить сопоставление таблицы с utf_general_ci с помощью doctrine2 Есть ли функция, чтобы сделать копию массива PHP другой? Алгоритм сортировки: итоговые суммы погашения Magento отсортированы неправильно, что приводит к неправильному исчислению налога на отправку

Вставка MySQLi в исходную ошибку

Привет, я вложил много вещей в базу данных mysql.

Но теперь я получаю сообщение об ошибке. Я вижу ошибку в подготовке базы данных. Что я делаю не так?

Это мой код:

$sql = "INSERT INTO Contact (IP,To,Name,Email,Subject,Text) VALUES ( ?, ?, ?, ?, ?, ? ) "; if (!$stmt = $db->prepare($sql)) { echo 'Database prepare error'; exit; } $stmt->bind_param('ssssss', $ip_contact, $to_contact, $name_contact, $email_contact, $subject_contact, $text_contact); if (!$stmt->execute()) { echo 'Database execute error'; exit; } $stmt->close(); 

Моя таблица SQL выглядит так:

 Contact: - ID int(11) auto_increment primary key - IP varchar(15) - To varchar(5) - Name varchar(20) - Email varchar(20) - Subject varchar(20) - Text varchar(600) лицо Contact: - ID int(11) auto_increment primary key - IP varchar(15) - To varchar(5) - Name varchar(20) - Email varchar(20) - Subject varchar(20) - Text varchar(600) 

Например, это зарезервированное слово в mysql , вы должны изменить свой код на:

 $sql = "INSERT INTO `Contact` (`IP`,`To`,`Name`,`Email`,`Subject`,`Text`) VALUES ( ?, ?, ?, ?, ?, ? ) "; 

Во-первых, это зарезервированное слово в mysql, поэтому вам нужно использовать его с использованием кавычек, как определено здесь .

Во-вторых, вам нужно установить значения переменных перед вызовом метода execute.

 $sql = "INSERT INTO Contact (IP,'To',Name,Email,Subject,Text) VALUES ( ?, ?, ?, ?, ?, ? ) "; if (!$stmt = $db->prepare($sql)) { echo 'Database prepare error'; exit; } $stmt->bind_param('ssssss', $ip_contact, $to_contact, $name_contact, $email_contact, $subject_contact, $text_contact); $ip_contact = '123456'; $to_contact = '123456'; $name_contact = '12345'; $email_contact = '1111'; $subject_contact = 'test'; $text_contact = 'test'; if (!$stmt->execute()) { echo 'Database execute error'; exit; } $stmt->close(); 

Теперь проверьте, он должен работать сейчас.

To является зарезервированным словом в MySQL. Вы должны добавить обратные элементы вокруг него:

 Contact (IP,`To`,Name,Email