|
|
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Фрагмент кода: //Получаю данные формы $site_name = $_POST['site-name'];//В это поле ввожу, например SITENAME //Делаю запрос $my_query ='INSERT INTO config ( site_name) VALUES ('.$site_name.');'; mysql_query($my_query,$db); Когда запускаю обработчик мне выдает: Ошибка записи в таблицу config: Unknown column 'SITENAME' in 'field list' _______________________________ Где я слепой не могу найти ошибку ? Вроде синтаксис правильный же ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 23:01:26 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Synov, SynovГде я слепой не могу найти ошибку ? Так и есть, натурально, слепой. Выведи получившийся текст запроса, может рассмотришь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.08.2013, 23:12:04 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, Выводит, все как по источнику, где я изучал синтаксис.... INSERT INTO config( site_name ) VALUES (SITENAME); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 00:22:07 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Synov, Что за источник? В печку ее немедленно :) (с) Профессор Преображенский Вот источник - MySQL :: MySQL 5.1 Reference Manual :: 13.2.5 INSERT Syntax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 00:33:57 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, INSERT INTO sklad (no,name) VALUES (3,'Монитор'); Вот самый простой пример из источника, чем мой запрос то отличается ? Скобками для текста, как: 'Монитор' ? Источник http://www.php.su/lessons/?lesson_9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 00:40:29 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Synov, Именно, молодой человек, именно ими и отличается ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 01:00:23 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
MikkiMouse, Я пробовал делать так вначале $site_name = '$_POST[\'site-name\']'; Результат: INSERT INTO config( site_name ) VALUES ($_POST[site-name]); А так, вышло: $my_query ='INSERT INTO config ( site_name) VALUES (\''.$site_name.'\');'; Спасибо огромное. Обучение по справочникам иногда заводит в тупик )) СПАСИБО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 01:08:52 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Что вы паритесь, даром что ли набиваете эти баксики бесконечно. Воспользуйтесь наконец тем, для чего они предусмотрены были: $my_query ="INSERT INTO config (`site_name`) VALUES ($site_name)"; $ - забыл как правильно называется сделан специально для того, чтобы компилятор мог распознавать переменную в любом контексте, в том числе внутри литералов, то есть вот таких вот строк закавыченных. Однако потребуются двойные кавычки. В одинарных все чисто - буквальная строка. Для скуль-запросов самое то если переменных меньше чем букаф. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 01:17:53 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
deblogger, Ооо не знал, спасибо, меньше путаницы будет) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 01:25:56 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Synov, Ага, но если вы делаете приложение которое должно отвечать стандартам, то вся эта моя прелесть падает в жерло вулкана в самом сердце Мордора. Это просто, да: $my_query ="INSERT INTO config (`site_name`) VALUES ($site_name)"; однако правильный квалификатор это db.table, table.field где любой идентификатор может иметь специальные символы или быть назван специальным словом. Стало быть православная запись такова INSERT INTO `db`.`config` (`config`.`site_name`) ... c VALUES ($site_name) еще затык - если это строка, надо кавычить, если число - не надо. Значение $site_name должно быть в кавычках, например $site_name = ' "sql.ru" '; Хорошо если вы берете данные с шаблона, а если без шаблона то: тип поля меньше 10 это число, все что больше 10 - строка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 08:34:56 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Не, прелесть остается, это у меня переклинило с непривычки. Знал же, но все равно наплодил мелких конкатенаторов вместо, например такого синтаксиса: Код: php 1. 2. 3. 4. 5. Это функция типа saveSetting() - всякие мелкие фишки сохранять в БД. Однако халява все равно не такая сладкая. Во-первых сами двойные приходится косячить, что делает код палочным (у меня от регов в частностинемедленно косогласие развивается), во-вторых следить чтобы внутрь двойных не попали лишние сущности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 09:06:43 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
автор Код: php 1. Говнокод, ибо очевидно, что это строка, и сей запрос не выполнится. c VALUES ($site_name) еще затык - если это строка, надо кавычить, если число - не надо. Мало вы статей читали про SQL injection. Видимо, совсем не в курсе про запросы типа id=-9999+OR+1=1/* и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 09:23:08 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
mhxМало вы статей читали про SQL injection. Видимо, совсем не в курсе про запросы типа id=-9999+OR+1=1/* и т.д. Типа не понял что это даст. Типа вам хочется увидеть ответ 404 или как-то еще себе навредить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 11:29:56 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
deblogger, не небрежном отношении к данным это позволяет получить тот набор данных, который вы никоим образом НЕ предполагали к выдаче. Ранее так находил разные, типа, заприваченные статьи на сайтах, в т.ч. и ДСП... щас просто не интересно стало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 12:28:16 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Arhat109, правильный вариант: INSERT INTO config (`site_name`) VALUES (?) с прибинтованным значением параметра. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 12:30:03 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Arhat109, Общие слова я и сам знаю. Меня интересовала техника конкретного варианта. Зачем мне кавычить число, если зная что это число я могу сделать его числом. $n = intval($s); Вы хакнули запрос - получите 0, или что там будет после интвала с вашим примером. Допустим вы дописали в user_id = 3 (or '1' = '1'); intval(3 (or '1' = '1');) сколько будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 15:44:16 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Второе, многоходовые комбинации в популярном API недопустимы. Как вы доберетесь до конца выражения? Я не знаю, не проверяю - мне просто интересно как вы уберете клиентом ; которую я ставлю в скрипте на сервере. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 15:49:32 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
deblogger, mhxdeblogger $my_query ="INSERT INTO config (`site_name`) VALUES ($site_name)"; Говнокод, ибо очевидно, что это строка, и сей запрос не выполнится. +1 @deblogger: Товарищ, не пишите бред, если не понимаете. Тут совсем не обязательно отвачать по 10 раз самому себе в КАЖДОЙ теме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.08.2013, 22:50:28 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
deblogger, Вы плохо понимаете о чём пишете. Я привел пример работы через бинтование параметров, а не их "кавыченье"... никакое слешование не исключает никаких инъекций. В случае целочисленных значений, явное приведение к целому позволяет избежать строковых иньекций, это да. Но и только. К сожалению, в базу гораздо чаще пишутся тексты и по ним же производится поиск (найди похожее). И вот передача их драйверу БД - не через бинтованные параметры - это и есть гарантия иньекций. Ещё раз - никакое слешование НЕ исключает инъекций. Бинтование параметров - это (на всякий случай, поскольку вы явно не в курсе) передача значений ОТДЕЛЬНО от самого текста запроса. Вы подаете парметризованный запрос ( ? - и есть место позиционного параметра ) и к нему, дополнительно всю ту фигню, которую хотите положить/фильтровать в/из БД. Сервер принимая их по отдельности - гарантирует что смешения и искажения самого запроса не произойдет. Требуется драйвер к БД типа PDO или какой другой (их щас многа), умеющий гонять сами запросы отдельно от параметров к ним. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 07:58:00 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Arhat109, PDO это высер mysqli. Майскля первична и биндами обмотана как доктор прописал. Вы мне на пальцах можете наконец показать _реальный_ пример инъекции, или будете продолжать пугать типа вот бука придет и укол нафталина тебе в задницу сделает. Два с половиной раза пытался понять на кой черт в майскле все эти бинды так и не понял. Это если посылать в хедере запрос текстом, типа DELETE FROM и бла-бла-бла до WHERE id=12 тогда, наверно да, надо отделить кал от мух. Однако с чего вы решили что я так и делаю? Это не подразумевалось и я так не делаю. Скрипт получает кучу параметров как таковых. Все фильтруется на скуль-энтитьки сперва, ну там избегнуть все кавычки, затем все типируется, что надо кавычится, тексты фильтруются, а операторы собираются по контексту. Сделайте уже наконец инъекцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 09:35:15 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
И вообще, по-моему так все делают и именно поэтому я так и не понял на кой черт то самое биндование. Может еще и это популярно объясните? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 09:39:33 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
deblogger, пошукайте в гугле. Есть хорошая прога, которая протестит ваш сайт на предмет возможных инъекций и даже скажет чего изъять из него можна... находил когда-то. Если вы чего-то не видели - это не значит что его не существует. А сочинять за вас запросы с инъекциями для ваших поделок - увольте. У меня своих задач хватает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.08.2013, 10:40:14 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Слив защитан. В который раз стыдно за нацию которая вместо документации читает катехизисы. Кстати, в документации я вычитал что квази-множественные запросы в популярном API таки разрешены. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Все просто, да? В процессе строительства запроса выкидываете все точкозапятые из идентификаторов которые прежде пропускаете через хтмлтитьки и запихиваете в тики; все значения пропускаете через mysqli->real_escape_string() и типируете, можно тупо по флагам поля - MYSQLI_NUM_FLAG, но это слишком тупо, лучше все-таки преобразовывать: целые в целые, плавающие в них самих и даты к тому же. В финале получив запрос вида SELECT * FROM `Моя_база`.`Страна` WHERE `Страна`.`Код_страны` = 8 вы будете избавлены от шприцов на долгие годы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 06:25:27 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
deblogger Все просто, да? В процессе строительства запроса выкидываете все точкозапятые из идентификаторов которые прежде пропускаете через хтмлтитьки и запихиваете в тики; все значения пропускаете через mysqli->real_escape_string() и типируете, можно тупо по флагам поля - MYSQLI_NUM_FLAG, но это слишком тупо, лучше все-таки преобразовывать: целые в целые, плавающие в них самих и даты к тому же.Мне одному кажется, что параметризация всё же проще как написании, так и прочтении? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 06:50:42 |
|
||
|
Помогите, не могу найти ошибку INSERT INTO=((((
|
|||
|---|---|---|---|
|
#18+
Ну вот, попался тут светоч по которому инжектор плачет: http://www.sql.ru/forum/1038869/vyborka-po-massivam Вы господа о таких случаях? Но если человек подставляет свою ягодицу под шприц несомненно найдутся желающие профтыкать. Хорошо, давайте обсудим параметризацию. Все равно давно уже оффтопик. У меня на входе н-заголовков в каждом по полю, флагу, типу и значению и н-2х-массив представляющий н-количество строк выбранных пользователем. Целого нет ничего абсолютно, все мелкими кусками подается. В частности если в значении заголовка 0 - это поле в операторах типа insert update вообще не участвует. Даже не представляю как в эту атомарную мелкоту еще и параметры зафигачить. Собственно оно и так уже параметризовано, или не параметризовано? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.08.2013, 07:30:35 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38352414&tid=1836305]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
50ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 379ms |

| 0 / 0 |
