Привет, я вложил много вещей в базу данных 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