2014-11-10 3 views
-1

Я пытаюсь вставить некоторые значения в базу данных mysql через php-код. Это прямо, но он не работает. Вот мой код:Php простая вставка не работает

$first = $_POST['first']; 
$last = $_POST['last']; 
$address = $_POST['address']; 
$mjesto = $_POST['mjesto']; 
$ptt = $_POST['ptt']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 

$a=1; 

$conn = new mysqli('server', 'user', 'pass', 'db'); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 



$sql = "insert into imtecEvents values 
    ('".$a."', '".$first."', '".$last."', '".$address."', '".$mjesto."', '".$ptt."', '".$email."', '".$phone."', '".$a."')"; 

$conn->query($sql); 
+1

1. Вы получаете ошибку? 2. Вы понимаете, что это приглашение на SQL-инъекцию? – JimiDini

+0

ваш запрос неверен: вы должны указать, какие coloumns вам нужно заполнить, например: «вставить в TABLENAME (поле1, поле2, поле3) VALUES (поле1value, field2value, field3value») »Также, как сказал JimiDini, ваш код уязвим для sql-инъекций, вы должны сначала подготовить запрос и проверить значения, которые вы получаете перед выполнением запроса. – briosheje

+0

Вставить в imtecEvents (column1 и т. д.) значения ('значение1' и т. д.) – roullie

ответ

-2

Попробуйте использовать это:

INSERT INTO table_name (column1,column2,column3,...) 
VALUES (value1,value2,value3,...); 
+0

Не могли бы вы добавить какое-то объяснение, почему, по вашему мнению, это решение? – fejese

+0

Это потому, что лучший подход - указать имя столбца в запросе, в каком поле вы хотите заполнить данные. , как указано выше: $ sql = "insert into imtecEvents значения ($. ',' ". $ mjesto." ','. $ ptt. "','". $ email. ", '". $ phone. "', '". $ a. "')"; $ a будет передан в первом столбце таблицы, и если первый столбец таблицы является id (уникальным). то в таком случае код будет работать отлично в первый раз, после чего он не добавит никакой записи в базу данных. –

+0

Я понимаю вашу точку зрения, и я считаю ее действительной, я говорю, что это не обязательно связано с вопросом. Указание списка полей является необязательным, и это не проблема. Проблема в том, что OP каждый раз указывает идентификатор на одно и то же значение, отличное от нуля. – fejese

0

Вы уверены, что все значения массива $_POST установлены? попробуйте напечатать этот массив print_r() или var_dump(), чтобы убедиться, что значения установлены. Во-вторых, попробуйте проверить, совпадает ли порядок/число значений, которые вы вставляете, в базу данных.

+0

Уверен, потому что я отправляю значения на свою почту, и заказ тоже хорош. –

+0

Попробуйте распечатать запрос перед его исполнением и посмотреть, что это такое ... – Anas

1

по крайней мере вы должны использовать MYSQLI PREPARE, чтобы избежать инъекции MySQL

в коде

$conn->query($sql); 

попробовать добавить этот код выхода ($ conn-> ошибка()), чтобы определить, если ошибка с вашим sql, таким образом;

$conn->query($sql) or exit($conn->error()); 

если нет, то выдать var_dump со всеми данными, вставленный проследить

Смежные вопросы