LINUX.ORG.RU

SQL+PHP


0

1

Не могу понять почему инсерт не проходит.
mysql_query («insert into Message (title, author, summary, message) values (».$title.",".$author.",".$summary.",".$message.")");

Причом вывожу перед вызовом этой ф-ции все четыре переменных, они нормальные. Сам mysql_query возращает false. Копирую sql запрос в пхпмайадмин и подставляю данные, он выполняется.
Структура таблицы:
CREATE TABLE IF NOT EXISTS `Message` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`title` varchar(200) NOT NULL,
`author` varchar(200) NOT NULL,
`summary` varchar(200) NOT NULL,
`message` varchar(500) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=14 ;

Чего я не вижу?

★★

или кавычки '".$title.«','».$author.«','».$summary.«','».$message.«')»

Droid790
()
Ответ на: комментарий от ef37

Нет не тебе одному, влегкую чо хошь то вбивай, я только учусь;)
Но от хорошего совета не откажусь.

DDR ★★
() автор топика
Ответ на: комментарий от DDR

Но от хорошего совета не откажусь.

Используй курсоры и bind-переменные, это еще вдобавок скажется на производительности в лучшую сторону. Ну или что-то вроде mysql_real_escape_string, если мускуль так и не научили этому.

ef37 ★★
()
Ответ на: комментарий от DDR

Но от хорошего совета не откажусь

Бросайте PHP пока не поздно.

Или, в крайнем случае, используйте PDO / mysqli и параметризованные запросы (дефолтное расширение mysql, кажется, их не умеет делать).

чо хошь то вбивай

Что вам мешает сразу писать правильно (т.е. хотя бы c mysql_real_escape_string)? Или это такой «путь самурая php», - типа каждый должен пройти огонь, воду и sql-инъекции? Не понимаю.

shylent
()
Ответ на: комментарий от shylent

> Что вам мешает сразу писать правильно (т.е. хотя бы c mysql_real_escape_string)?

Для начала то, что существует масса какашек (например, mysql_escape_string), позволяющие писять якобы «правильно», чем вводят пыхпыхБК в заблуждение. Необходимость использовать PDO приводит к необходимости использовать куцый пыхпыхООПе с вырвиглазным синтаксисом. В общем, вброс окончен, а посему </thread>

anonymous
()
Ответ на: комментарий от anonymous

Чем люблю ЛОР, так его полным соответствием русскому форуму из фразы:
«Американский форум. Задаёшь вопрос, потом тебе отвечают.
Израильский форум. Задаёшь вопрос, потом тебе задают вопрос.
Русский форум. Задаёшь вопрос, потом тебе долго рассказывают, какой ты мудак. »

За mysql_real_escape_string спасибо, буду читать))))

DDR ★★
() автор топика
Ответ на: комментарий от DDR

Неправда.

На том же Stackoverflow, обычно в лучших ответах люди сначала объясняют ошибки подхода (если они есть), а потом дают, собственно, ответ на поставленный вопрос.

На IRC-каналах типа ##c++, #mysql и т.п. (по крайней мере, на freenode) с вами и разговаривать-то не будут, если вы спрашиваете что-то типа «как сделать Х и пофиг, что так делать нельзя».

Помогать людям писать явно плохой код я не собираюсь.

Так что заберите ваш анекдот назад.

shylent
()
Ответ на: комментарий от anonymous

А лучше не использовать пыхпых, пока не отрелизят real_PDO, потому как PDO потом кратенько объявят deprecated и скажут, мол, да, его писали мудаки, там некорректно делается это и это, и вообще теперь мы на 800% лучше, глобальней и надежней, чем были когда-то.

anonymous
()
Ответ на: комментарий от anonymous

>А лучше не использовать пыхпых, пока не отрелизят real_PDO, потому как PDO потом кратенько объявят deprecated

А не пофиг? Собственный SQL-драйвер реализуется в несколько десятков строк. И потом замена одного бэкенда на другой приводит к получасу работе по переписыванию и ещё получасу - на отладку возможных багов.

Я до сих пор юзаю обычный mysql, ибо работает и ладно. Но сменить его на mysqli или PDO - дело часа работы всего с одним файлом. Или даже меньше. Так что - фиолетово :)

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.