Я пытаюсь переучивать SQL и phpmyadmin, и у меня возникли проблемы с подключением SQL и моим запросом. Я использую базовую форму для определения того, как должна работать информация через форму. У меня есть таблица с 5 столбцами: user_ID, email, username, first_name и last_name. user_ID - это первичный ключ с свойствами автоматического обновления и bigint, тогда как электронная почта и имя пользователя являются уникальными ключами. Пользователь имеет следующие глобальные привилегии: SELECT, INSERT, UPDATE, DELETE и CREATE TEMPORARY TABLES. Я надеюсь, что смогу понять, что происходит, поэтому я могу продолжить свою работу.SQL Вставка запроса не работает
Редактировать: Я просто проверил, что часть «$ cxn» моего кода работает, и это всего лишь мой запрос результатов. Я также проверил, и все данные из формы правильно передаются в запрос. Я также исправил форматирование кода, и я все равно получаю ту же ошибку.
$host = 'localhost';
$user = 'users';
$dbpass = 'password';
$dbname = 'users';
$cxn = mysqli_connect($host,$user,$dbpass,$dbname) or die("Could not connect to server.");
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes')
{
$query = "insert into 'user_info' ('email', 'username', 'first_name', 'last_name') values ([".$_POST['email']."], [".$_POST['username']."], [".$_POST['first_name']."], [".$_POST['last_name']."])";
$result = mysqli_query($cxn,$query) or die('Can\'t complete query.');
echo "Congratulations!";
}
Редактировать 2: Следуя рекомендациям некоторых комментариев, я изменил свой код на следующее. Я думаю, что это должно быть безопасно от SQL-инъекции и должно быть отформатировано правильно. Тем не менее, он все еще дает мне ошибки при отправке, и я не уверен, что еще я могу изменить. Я начинаю думать, что что-то не так с самой базой данных, хотя я не изменил никаких настроек, кроме добавления пользователя.
$email = $_POST['email'];
$username = $_POST['username'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$safe_email = mysql_real_escape_string($email);
$safe_username = mysql_real_escape_string($username);
$safe_first = mysql_real_escape_string($first_name);
$safe_last = mysql_real_escape_string($last_name);
$query = "insert into `user_info` (`email`, `username', `first_name`, `last_name`) values ('$safe_email', '$safe_username', '$safe_first', '$safe_last')";
$result = mysqli_query($cxn,$query) or die('Can\'t complete query.');
echo "Congratulations!";
вам не нужно квадратные скобки вокруг значений. т.е.: [$ _POST ['field']] – RamRaider
Я бы посоветовал вам начать использовать подготовленные заявления ... Ваш код открыт для ** SQL-инъекции **. Вы можете найти все на подготовленных операциях [здесь] (http : //stackoverflow.com/questions/9629328/how-to-use-mysqli-prepared-statements-in-php) – Naruto
Обновите свой запрос в '' insert в \ 'user_info \' (\ 'email \', \ ' имя пользователя \ ', \' first_name \ ', \' last_name \ ') значения ('{$ _POST [' email ']}', '{$ _POST [' username ']}', '{$ _POST [' first_name ' ]} ',' {$ _POST ['last_name']} ') ";' –