2014-02-07 4 views
1
<html> 
<head> 
</head> 
<body> 
<form action = "insertform.php" method = "post"> 
field: <input type = "text" name = "fielda"> 
field2: <input type = "text" name = "fieldb"> 
thedata: <input type = "text" name = "qdata"> 
<input type = "submit" name = "submit"> 
</form> 

<?php 
if (isset($_POST['submit'])){ 

$con = mysql_connect("localhost","user","password"); 
if (!$con){ 
die("cannot connect" . mysql_error()); 
} 
mysql_select_db("stQutieria",$con); 
$sql = "INSERT INTO qtable(fielda, fieldb, qdata) VALUES ("$_POST[fielda]","$_POST[fieldb]","$_POST[qdata]")"; 

mysql_query($sql,$con); 
mysql_close($con); 
} 
?> 
</body> 
</html> 

Редактировать: OK! поэтому я изменил свой код, я играл с двойными кавычками или «вокруг областей $ _POST. Когда я использовал двойные кавычки, я получил ошибки, указав fielda/fieldb wernt, я также получил ошибки, говоря «синтаксическая ошибка, неожиданный» $ _POST (T_VARIABLE) »... код, с которым я работаю, выводится из той же самой вставки страницы. PHP. Вот видео, которое я смотрю http://www.youtube.com/watch?v=j4FUCoCxE8w. если бы кто-нибудь мог мне помочь в Skype/msn/teamview, я был бы очень признателен.php/mysql, возвращающий пустой набор

+0

Вы пытаетесь экс ecute все с той же страницы. Используйте '

' вместо '' –

+0

@ Fred-ii- Предполагая, что это 'insertform.php' it ' Хорошо работаю. – helion3

+0

Да, вы правы. @ helion3 –

ответ

0

Это означает, что ваш запрос не работает. Скорее всего, потому что у вас нет пространства между именем таблицы и имена столбцов:

INSERT INTO qtable (fielda, fieldb, qdata)

3
  1. Вы упускаете кавычки ваших $_POST ключей: $_POST[fielda] должны быть $_POST['fielda'] и т.д. (на самом деле not true)

  2. Вам необходимо место после названия вашей таблицы и открывающей скобки qtable(fielda должно быть qtable (fielda

  3. Вы упускаете цитату после '$_POST[fielda] (должно быть '$_POST[fielda]') и после того, как '$_POST[fieldb] (должно быть '$_POST[fieldb]')

  4. У вас нет обработки ошибок. Если вы позвоните по номеру mysql_error() после вашего запроса, вы должны знать точно, какова ваша ошибка.

  5. Вы широко открыты для SQL injections

  6. Вы используете obsolete API

+0

неправильный на # 1. они находятся в строках с двойными кавычками, где запрещены цитируемые ключи массива, если весь массив referenc не равен '{}' -delimited –

+0

'' $ _POST [fieldb] 'также отсутствует цитата. –

+0

Когда я смотрю на остальных, я думаю, что стартовая цитата для третьего значения выглядела как закрывающая цитата для этого. Позвольте мне добавить его в список ... –

0

заменить Ваш SQL с:

$sql = "INSERT INTO qtable (fielda, fieldb, qdata) VALUES ('".$_POST['fielda']."','".$_POST['fieldb']."','".$_POST['qdata']."')"; 

, но это действительно небезопасно ...

Гораздо более безопасным является использование что-то вроде этого:

$values = array($_POST['fielda'], $_POST['fieldb'], $_POST['qdata']);  
$st = $db->prepare('INSERT INTO qtable (fielda, fieldb, qdata) VALUES (?,?,?)'); 
$st->execute($values); 
0

Вы делаете ошибку в кодировании правильного утверждения SQL будет как этого

$sql ="INSERT INTO qtable(fielda, fieldb, qdata) VALUES (".$_POST[fielda].",".$_POST[fieldb].",".$_POST[qdata].")"; 

Примечания это выше заявление SQL для тех полей, которые являются целыми числами в базе данных, если поля VARCHAR, то следующий будет код

$sql ="INSERT INTO qtable(fielda, fieldb, qdata) VALUES ('".$_POST[fielda]."','".$_POST[fieldb]."','".$_POST[qdata]."')"; 

Спасибо

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