кривой SQL запрос
Никак не могу вспомнить как правильно состовляется SQL запрос в PHP. Пробую так:
$text="My text";
$sql="INSERT INTO index SET type='".$type."', text='".$text."'";
mysql_query($sql) or die(mysql_error());
Выдает ошибку:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'index SET type='My type', text='My text'' at line 1
Перепробовал кучу вариантов и всегда одна ошибка, подскажите что не так.Заранее благодарен.
Ну и вообще. Тут все криво. Такие имена как INDEX (index так же), text и т.д. - это зарезервированные именна. В кавычки возьмите
Сдесь снова ошибка возникает только уже php, якобы скобка лишняя.
`type` TEXT,
`text` TEXT
);
заслал запрос:
все работает норм.
в том посте выше, просто забыл закрывающую скобку в последнем выражении.
и не используйте желательно зарезервированные слова в именнах таблиц и полей, на всякий случай.
а
Заметте, что если весь запрос обрамлён в двойный ковычки, то совсем не обязательно имена переменных типа $type выносить за их пределы методом ".$type."
Без такой конструкции даже удобнее, правда если работаете не с notepad а с каким-нибудь специализированным редактором php (например ZDE) с хорошим парсером подсветки синтаксиса.
Теоретико-практический пример :) :
1.
2.
3.
В приведённых выше примерах первые 2 абсолютно идентичны, но 2-й проще записан.
А 3-й возвратит в переменную не значение $val2, а просто текст $val2, т.к. там одинарные ковычки.
Ну это так... Просто почему-то все пишут как в примере 1, а не как в примере 2, хотя пример 2 проще. ИМХО.
ИМХО, не сказал бы. Ну вот даже тут на форуме выигрывает первый вариант в силу наглядности (в третьем переменная вбитая в закавыченную двойными кавычками строку не подсвечивается ;) ).
Да и $val2 из трех примеров выше потенциально может быть какого угодно типа, отсюда, если по логике, то конкатенация оператором "." выглядит уместней.
А если уже писать переменный внутри строки, то тогда уж обрамлять её "{}", вот тогда действительно будет наглядно.
ЗЫ: от того как написать SQL-запрос, вашим методом или моим - разницы нет. Строка запроса в итоге все равно будет одна и та же
в третьем переменная вбитая в закавыченную двойными кавычками строку не подсвечивается.
[/QUOTE]
Гы, а у меня в ZendStudio-5.5.1 подсвечивается прекрастно :)
Вообще, наверное это кому как по душе писать. Я просто привык уже так.
Просто я хотел сказать, что так можно.
[QUOTE=UAS]нююю во-первых тема не той направленности, где идет обсуждения привычки конкатенации. А во-вторых разницы никакой, да и работает быстрее мой вариант, хотя не суть.[/QUOTE]
Да это я пока писал немного отвлёкся :) Прошу прошения.
Смысл моего сообщения был в том, что нужно между скобками в запросе INSERT писать VALUES. Я просто думал опечатались. Я без этого не пробовал, но поидее же нужно, или можно и без этого зарезервированного слова? :)
Смысл моего сообщения был в том, что нужно между скобками в запросе INSERT писать VALUES. Я просто думал опечатались. Я без этого не пробовал, но поидее же нужно, или можно и без этого зарезервированного слова? :)
Вот тут каюсь) Сделал опечатку) Ну вообщем если бы человек, который открыл топик, почитал бы мануал, то все бы решилось за 2 минуты =)
На скорую руку часто опечатываюсь.:(
[COLOR="Silver"][SIZE="1"]ЗЫ: спс, подправил ошибку[/SIZE][/COLOR]:)
$str="Текст {$arr} Текст";//
Суть в том что можно без разрыва строк вставлять элементы массива, а по скорости уж не поверю что имено определение строки играет такую существенную роль на быстродействие, а вот на разбор кода очень сильно. Этот миф наверно еще с пхп4 идет, если не 3
Смотрел и не раз! К сожалению там есть разница с Вашим запросом. Так что спасибо Вам за помощь, теперь все работает!