2015-01-17 10 views
0

HTML кодошибка при попытке вставить данные в базу данных

<form id="form1" name="addAnnouncement" method="post" action="ownerAddAnnouncement_exec.php" onsubmit="return validateForm()"> 
    <label style="font-size:18px">Title: 
    <input type="text" name="title" /> 
    </label> 
    <p> 
    <label style="margin-left: -36px; font-size:18px;">Description: 
    <textarea name="description" rows="6" cols="60"></textarea> 
    </label> 
    </p> 
    <label style="font-size:18px">Date & Time: <br> 
    From 
    <input type="text" name="from" /> <br> 
    To <input type="text" name="to" /> 
    </label> <br> 
    <label style="font-size:18px">Venue 
    <input type="text" name="venue" /> 
    </label>   
    <p> 
    <label> 
    <input type="submit" name="Submit" value="Submit" /> 
    </label> 
    </p> 
    </fieldset> 
    </form> 

PHP код

<?php 


$title = $_POST['title']; 
$description = $_POST['description']; 
$from = $_POST['from']; 
$to = $_POST['to']; 
$venue = $_POST['venue']; 


$link = mysql_connect("localhost","root","") or die(); 
$db = mysql_select_db("condo") or die("no database found"); 
$insert_sql="INSERT INTO announcement (title, description, from, to,venue, status) 
      VALUES('$title', '$description', '$from', '$to','$venue', 'Pending')"; 

$sql_result=mysql_query($insert_sql) or die("Error in inserting data due to ".mysql_error()); 

if($sql_result) 
    echo "Succesfully insert new data. Please log in back"; 

     else 
    echo "Error in inserting new data"; 

?>

ошибка как этот ("Ошибка при вставке данных из-за вас ошибка в синтаксисе SQL, проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с 'from, to, status. VALUES (' melvin ',' sdsaadsd ',' wew ',' ewrerw ',' we3 ',' Pendi 'a t line 1 ") отображается при попытке вставить данные в базу данных.

Кто-нибудь, пожалуйста, помогите мне исправить код.i застрял здесь 1 час.

ответ

3

Показать имена полей с в ``.

Преобразование оператора вставки в

$insert_sql="INSERT INTO announcement (`title`, `description`, `from`, `to`,`venue`, `status`) 
      VALUES('$title', '$description', '$from', '$to','$venue', 'Pending')"; 
1

Относительно текущей ошибки он о зарезервированном ключевых словах, как от как имя поля, поэтому, чтобы избежать его либо переименовать столбец дб или заключить его в обратных кавычках как `от`

дальше вы можете столкнуться с другими ошибками как вы игнорируете много хороших практик в вашем коде, например

  • Validate пользовательского ввода перед вставкой в ​​БД
  • помнить, чтобы избежать пользовательского ввода (SQL-инъекция)
  • имена Вложите поля в обратных кавычках
  • и многие другие видят http://code.tutsplus.com/tutorials/30-php-best-practices-for-beginners--net-6194
+0

Пожалуйста, укажите фиксированный запрос, этот тип ответа должен быть помещен в комментарий. –

1

Вы должны избежать зарезервированных ключевых слов, используя кавычку. В настоящее время вы используете следующие зарезервированные ключевые слова - From и To Попробуйте это: -

$insert_sql="INSERT INTO `announcement` (`title`, `description`, `from`, `to`,`venue`, `status`) 
     VALUES('$title', '$description', '$from', '$to','$venue', 'Pending')"; 
1

From это ключевое слово. А также To. Не рекомендуется использовать их. Но если вы не можете этого избежать и хотите их использовать, добавьте backquote `, как показано ниже в вашем запросе на вставку:

Объявление INSERT INTO (` title`, `description`,` from`, `to`,` from ` status`) VALUES ('$ title', '$ description', '$ from', '$ to', 'Pending')

Надеюсь, это помогло.