Скорее всего данная ошибка означает, что то, что первым параметром вы передали в foreach, не массив, наверное у вас $_POST пуст и форычить то нечего походу...
Знаю, что многие из вас готовы меня уже пристрелить, но все же отпишу здесь ещё разок ) Вообщем, думал, ходил-бродил по инету, "слепил" в итоге "код", который указан ниже. Все работает, вот только не пойму одного. Как использовать соединение с БД внутри функции/метода остальных классов напрямую?
$db->query("INSERT INTO users(login, password) VALUES('login', 'password')") or die($db->error);
}
То нифига не отработает... Читал про глобальные переменные и понял, что использовать их не желательно..
Или тогда получается, что при использовании синглтона все sql запросы должны находиться "ЗА ПРЕДЕЛЕАМИ" классов или функций? А функции в свою очередь должны возвращать какой то результат, а уже потом в той области где доступен синглтон должен обрабатываться sql запрос на основе того, что вернет функция или метод из класса? Не удобно на мой взгляд...
spsu
Фреймворки я пока не использую, думаю в дальнейшем тоже не буду, если работа по этой части не подвернется... делать "на готовенькое" - не думаю что самый лучший способ.. лучше на своих ошибках учиться и набирать опыт, таким образом в дальнейшем я уже буду чувствовать себя увереннее... (Добавление)
vanicon пишет:
Какой труд, написали же что проект учебный.
Ну и что учебный? )
vanicon пишет:
Так что пишите код, а позже поймете что написали не так и перепишите, от этого не куда не деться, а на пальцах не объяснить, это практика.
Наверное вы правы... скорее всего моя самая большая ошибка заключается в том, что я хочу выучить все и сразу... Ну ничего с собой поделать не могу, руки чешуться ))
По поводу синглтона хотел бы ещё раз определиться.. Вообщем прочитал всякого в интернете, мнений много, хотелось бы услышать дельный совет..
Дела обстоят так: Хочу написать большой проект(учебный), посвятить которому планирую не менее 2-3 месяца, будет много всяких фишек + админка. Читал что "неграмотное" использование шаблонов может привести в итоге к "замыканию" при переносе на хостинг или при расширении проекта. Вообщем встретил много всего интересного и чуть запутался... как говорится, сколько людей - столько и мнений..
Могут ли у меня возникнуть какие то подводные камни при использовании шаблона с которыми я скорее всего не сталкивался? Речь идет конкретно о синглтоне только для подключения к БД... А то в последнее время немного шокирован "открытиями" с которыми ознакомился на днях... Как оказалось, ньюансов более чем достаточно. Дабы не проворонить весь свой труд, хотелось бы уточнить этот момент... Сори если вопросы глупые, скорее всего так оно и есть )) Но в целях корректного обучения все же осмеливаюсь их здесь задавать... Спасибо заранее
AlexAnder
T_PAAMAYIM_NEKUDOTAYIM возникает тогда, когда косячим с этими самыми ::, здесь оно походу не уместно, во всяком случае у меня нет подобной ошибки...
vanicon
Вот-вот ) Именно в том то и дело, что прочитал кучу всего и встретил почти такую же мысль, что бы использовать шаблоны нужна высокая квалификация а не для того что бы "было"...
Информации в сети много, порой ваще не понимаешь что делать и как, пока собственные шишки не набьешь )
DelphinPRO
Отписались в тему прочел почти тоже самое в статье на хабре, ваш ответ и прочитанное мною в статье совместилось в одно целое и таким образом я окончательно нашел ответ на этот вопрос! )
А вообще радует, что есть такой форум и люди, которые помогают ) Что бы я без вас делал... Разработчикам данного проекта отдельное спасибо, вы просто молодцы!
LIME
Интересно ) получается подсветка глючная? Если сравнить два последних запроса от esterio, то в предпоследнем подстветка получается такой, что DROP TABLE выглядит такого же цвета, как и SELECT, FROM и WHERE, что наводит на мысль "послушного исполнения скрипта", а во втором примере уже подсветка иная, т.е уже DROP TABLE подсвечивается как обычный текст и игнорируется в запросе.. как то так
тебе надо уяснить одно простую весч
сервер бд работает отдельно
и строка запроса передается в него
именно строка
которую формирует пых
и экранированные символы бд воспринимает как часть значения
ага, получается я просто не совсем правильно представлял себе как оно работает )
esterio
Спасибо за подробное описание ) заметил разницу в подсветке SQL запроса, в последнем случае запрос на "удаление" не подсвечивается как "удаляющий"... надеюсь правильно объяснил то, что хотел сказать )) Почти такие же примеры увидел в одной статье про sql иньекции на хабре )
LIME
А-а, теперь понятно.. тоесть экранирование действует в момент выполнения запроса, если я правильно понял, таким образом "внедренный" скрипт остается в ауте в момент запроса и не срабатывает, а то что он добавится в БД - это не страшно...
И если я все правильно понял, то выходит убил сразу двух зайцев. Недавно задался вопросом: Если все в БД добавляется со слешами, то как на этом форуме люди спокойно публикуют различные скрипты и БД ни чуть не страдает от этого и визуально все норм выглядит без всяких слешей...
ну чтож, закрываем тему наверное )) Спасибо ещё раз, теперь могу кодить дальше.. а то тупил почти 3 дня )
Знаю, что бред ) затем и обратился на форум )) не знаю, бывает у меня такое, чего то не понимаю в упор, но спустя некоторое время начинаю смеяться над самим собой )) ну это тогда когда уже врубаюсь в тему ))
DeepVarvar пишет:
Так и должно быть.
Странно, я почему то думал в БД должно добавляться уже экранированные данные, иначе какой толк от функции? Если мне не изменяет память, то видел даже своими глазами в одном из обучающих видеоуроков... месяца 2-3 назад было конечно, поэтому могу ошибаться...
Ах вот оно что, точно, видел такое )) Но почему то в голове крутилась мысль "mysqli же более совершеннее чем mysql", значит там все должно быть проще! ) Оно и сбивало меня с толку... я думал что это бред и есть более простое решение спасибо за помощь! )
LIME
Мне проще будет в каждом методе открыть/закрыть соединение, стыдно признать, но в упор не понимаю что к чему...
LIME пишет:
set_charset('utf8');
Спасибо учту, а как быть с экранированием спец. символов? В конце первого поста описал проблему, как можно ее вылечить? Если использую mysql_real_escape_string или $mysqli->real_escape_string() и вывожу результат при помощи echo, то экранируется нормально, но в БД данные добавляются уже без экранирования...