2015-12-01 2 views
0

Я пытаюсь переучивать 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!"; 
+2

вам не нужно квадратные скобки вокруг значений. т.е.: [$ _POST ['field']] – RamRaider

+2

Я бы посоветовал вам начать использовать подготовленные заявления ... Ваш код открыт для ** SQL-инъекции **. Вы можете найти все на подготовленных операциях [здесь] (http : //stackoverflow.com/questions/9629328/how-to-use-mysqli-prepared-statements-in-php) – Naruto

+0

Обновите свой запрос в '' insert в \ 'user_info \' (\ 'email \', \ ' имя пользователя \ ', \' first_name \ ', \' last_name \ ') значения ('{$ _POST [' email ']}', '{$ _POST [' username ']}', '{$ _POST [' first_name ' ]} ',' {$ _POST ['last_name']} ') ";' –

ответ

2

Изменение вставки запрос -

$query = "insert into `user_info` (`email`, `username`, `first_name`, `last_name`) values ('{$_POST['email']}', '{$_POST['username']}', '{$_POST['first_name']}', '{$_POST['last_name']}')"; 

Кроме того, после комментариев, ваш код открыт для SQL-инъекций. Пожалуйста, use prepared statements с параметризованными запросами, чтобы этого избежать.

Также см. this thread для получения дополнительной информации.

+0

это не удастся. вы скопировали кавычки OP, а не none или ticks '\' '- Плюс, вы оставляете их открытыми для SQL-инъекции. протестируйте его самостоятельно и добавьте 'mysqli_error ($ con)' в запрос. Вот увидишь. –

+0

Эй, спасибо за упоминание, я только что обновил его. – jitendrapurohit

+0

Добро пожаловать. –

-1

удалите [] из кроме $_POST значений и надлежащим образом "" для каждого значения, как это: '".$_POST['email']."'

-1

я не уверен, но я хотел бы сделать следующее:

$query = "insert into user_info (email, username, first_name, last_name) values ('".$_POST['email']."', '".$_POST['username']."', '".$_POST['first_name']."', '".$_POST['last_name']."')"; 
Смежные вопросы