2013-05-02 2 views
1

Неизвестный столбец «Абу» в «списке поля» Так вот немного поле комментария Я работаю на http://abu.cpvp.net/cupcakes.php , когда я положил на мое имя и комментарий не будет работать, однако, если я ставлю на имя для поля имени и комментарий для поля комментариев он работает ???? Вот мой сценарийНеизвестная колонна?

$name=$_POST['name']; 
$comment=$_POST['comment']; 
$submit=$_POST['post']; 
if($_POST['name'] && $_POST['comment'] && $submit) 
{ 
    $insert=mysql_query("INSERT INTO `comment (`name`,`comment`) 
         VALUES ($name,$comment) ") or die(mysql_error()); 
} 
else 
{ 
    echo "please fill out all fields"; 
} 

ответ

2

если тип данных столбцов строка, то значение должно быть завернуты в одинарные кавычки, так как они являются строковые литералы,

INSERT INTO comment (name,comment) VALUES ('$name','$comment') 

Как Замечание, запрос уязвим с SQL Injection, если значение (s) переменных было получено извне. Пожалуйста, ознакомьтесь с приведенной ниже статьей, чтобы узнать, как ее предотвратить. Используя PreparedStatements, вы можете избавиться от использования одинарных кавычек вокруг значений.

+1

Wow благодаря закрыты ! Да, я бы предпочел использовать PDO, но мой хост не предлагает его. К сожалению .. Я рассмотрю, как предотвратить инъекции SQL. Спасибо за ссылку! – Abu

+0

приветствую ':)' –

+0

Итак, мой единственный вопрос с SQL-вещью, я просто делаю ее непрямой? $ dbconnection() – Abu

0

Вы должны поместить строки в кавычки:

$insert=mysql_query("INSERT INTO comment 
(name,comment) 
VALUES ($name,$comment) ") 

должен быть

$insert=mysql_query("INSERT INTO comment 
(name,comment) 
VALUES ('$name','$comment') ") 

Please, don't use mysql_* functions in new code. Они больше не поддерживаются and are officially deprecated. См. red box? Узнайте о prepared statements вместо этого, и используйте PDO или MySQLi - this article поможет вам решить, какой. Если вы выберете PDO, here is a good tutorial.

Вы также широко открыты для SQL injections

+0

Да, я сделаю свой код более современным. Я просто вернусь к кодированию PHP, и последний раз, когда я использовал, было около десяти лет. – Abu

+0

Yep собираюсь учеба pdo сейчас./blocking off comment page – Abu

0
INSERT INTO comment (name,comment) VALUES ('$name','$comment') 

будет решить проблему .. Но что-то другие разработчики могли заметить, но не указал, .. Вы не закрыли обратные одиночные кавычки вашего SQL Запрос:

INSERT INTO `comment 

Должно быть:

INSERT INTO `comment` 

нет ничего плохого в использовании кавычки для имен столбцов/таблиц/схемы .. Infact они рекомендуются, чтобы свести к минимуму риска нарваться на SQL зарезервированного слова .. Обеспечивая они открыты/правильно

+0

Не знаете, что такое зарезервированное слово SQL, однако сделано. Спасибо за отзыв – Abu

+0

@ user2288998 http://dev.mysql.com/doc/refman/5.0/ru/reserved-words.html в этом обзоре возможны сообщения об ошибках и дает представление о том, что я подразумеваю под зарезервированными словами –

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