PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи

Страниц (98): В начало « ... 81 82 83 84 [85] 86 87 88 89 ... » В конец

> Найдено сообщений: 1465
teddy Отправлено: 13 Июня, 2013 - 15:16:08 • Тема: Вопрос по уроку Передача параметров с помощью HTML-форм • Форум: Вопросы новичков

Ответов: 4
Просмотров: 120
Warning: Invalid argument supplied for foreach()

Скорее всего данная ошибка означает, что то, что первым параметром вы передали в foreach, не массив, наверное у вас $_POST пуст и форычить то нечего походу...
teddy Отправлено: 13 Июня, 2013 - 15:11:28 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
Знаю, что многие из вас готовы меня уже пристрелить, но все же отпишу здесь ещё разок ) Вообщем, думал, ходил-бродил по инету, "слепил" в итоге "код", который указан ниже. Все работает, вот только не пойму одного. Как использовать соединение с БД внутри функции/метода остальных классов напрямую?

PHP:
скопировать код в буфер обмена
  1. class DBconnect {      
  2.         static private $_instance = null;
  3.        
  4.         private function __construct () {}
  5.         private function __clone () {}
  6.        
  7.         static function getInstance () {
  8.        
  9.         if(self::$_instance == null){
  10.  
  11.         self::$_instance = new mysqli("localhost", "root", "", "users");
  12.  
  13.         return self::$_instance;
  14.                 }
  15.                
  16.        
  17.         }      
  18.                
  19. }
  20. $db = DBconnect::getInstance();
  21. $db->query("INSERT INTO users(login, password) VALUES('login', 'password')") or die($db->error);


На первый взгляд вроде все в шоколаде, но если я напишу что то вроде

PHP:
скопировать код в буфер обмена
  1. function blabla () {
  2. $db->query("INSERT INTO users(login, password) VALUES('login', 'password')") or die($db->error);
  3.  
  4. }


То нифига не отработает... Читал про глобальные переменные и понял, что использовать их не желательно..

Или тогда получается, что при использовании синглтона все sql запросы должны находиться "ЗА ПРЕДЕЛЕАМИ" классов или функций? А функции в свою очередь должны возвращать какой то результат, а уже потом в той области где доступен синглтон должен обрабатываться sql запрос на основе того, что вернет функция или метод из класса? Не удобно на мой взгляд...


Да, я жду ваших выстрелов Язычок
teddy Отправлено: 12 Июня, 2013 - 22:38:49 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
spsu
Фреймворки я пока не использую, думаю в дальнейшем тоже не буду, если работа по этой части не подвернется... делать "на готовенькое" - не думаю что самый лучший способ.. лучше на своих ошибках учиться и набирать опыт, таким образом в дальнейшем я уже буду чувствовать себя увереннее...
(Добавление)
vanicon пишет:
Какой труд, написали же что проект учебный.

Ну и что учебный? )

vanicon пишет:
Так что пишите код, а позже поймете что написали не так и перепишите, от этого не куда не деться, а на пальцах не объяснить, это практика.

Наверное вы правы... скорее всего моя самая большая ошибка заключается в том, что я хочу выучить все и сразу... Ну ничего с собой поделать не могу, руки чешуться ))
teddy Отправлено: 12 Июня, 2013 - 22:27:57 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
DeepVarvar пишет:
а надо написать:
public static function AddCart()

Да я уже давно исправил, спасибо )

По поводу синглтона хотел бы ещё раз определиться.. Вообщем прочитал всякого в интернете, мнений много, хотелось бы услышать дельный совет..

Дела обстоят так: Хочу написать большой проект(учебный), посвятить которому планирую не менее 2-3 месяца, будет много всяких фишек + админка. Читал что "неграмотное" использование шаблонов может привести в итоге к "замыканию" при переносе на хостинг или при расширении проекта. Вообщем встретил много всего интересного и чуть запутался... как говорится, сколько людей - столько и мнений..

Могут ли у меня возникнуть какие то подводные камни при использовании шаблона с которыми я скорее всего не сталкивался? Речь идет конкретно о синглтоне только для подключения к БД... А то в последнее время немного шокирован "открытиями" с которыми ознакомился на днях... Как оказалось, ньюансов более чем достаточно. Дабы не проворонить весь свой труд, хотелось бы уточнить этот момент... Сори если вопросы глупые, скорее всего так оно и есть )) Но в целях корректного обучения все же осмеливаюсь их здесь задавать... Спасибо заранее
teddy Отправлено: 12 Июня, 2013 - 20:17:12 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
LIME
Strict Standards: Non-static method Cars::AddCar() should not be called statically in Z:\home\test1.ru\www\newclass.php on line 27

Вот что вышло, но никак не T_PAAMAYIM_NEKUDOTAYIM...

Странно, что в БД все добавляется успешно...


Если не ошибаюсь, при T_PAAMAYIM_NEKUDOTAYIM - вообще все ломается, хоть если error_reporting(0)...
teddy Отправлено: 12 Июня, 2013 - 20:06:06 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
AlexAnder
T_PAAMAYIM_NEKUDOTAYIM возникает тогда, когда косячим с этими самыми ::, здесь оно походу не уместно, во всяком случае у меня нет подобной ошибки...

vanicon
Вот-вот ) Именно в том то и дело, что прочитал кучу всего и встретил почти такую же мысль, что бы использовать шаблоны нужна высокая квалификация а не для того что бы "было"...

Информации в сети много, порой ваще не понимаешь что делать и как, пока собственные шишки не набьешь )
teddy Отправлено: 12 Июня, 2013 - 19:51:24 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
Мелкий
Да, но прочитал про синглтон много отрицательных отзывов и подумал, что лучше вообще съехать с шаблонов...

AlexAnder
Что удивительного то? )
teddy Отправлено: 12 Июня, 2013 - 18:38:51 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
Сделал чуть по другому, это нормально, что внутри каждого метода я пишу self::connectDB(); - что бы дать понять про открытое соединение?

Чую полетят тухлые яйца и помидоры Хм

PHP:
скопировать код в буфер обмена
  1. class Cars {
  2.  
  3. private static $mysqli = null;
  4.  
  5.  function connectDB (){
  6.        
  7.         if(self::$mysqli == null){
  8.                
  9.         self::$mysqli = new mysqli("localhost", "root", "", "users");
  10.                
  11.         return self::$mysqli;
  12.        
  13.         }
  14.  
  15.  
  16.  }
  17.         function AddCar($model, $year, $speed) {
  18.                 self::connectDB();
  19.                 self::$mysqli->query("INSERT INTO cars(model,year,speed)VALUES('$model','$year','$speed')");
  20.                
  21.         }
  22.  
  23. }
  24.  
  25. Cars::AddCar("model","year","speed");

(Добавление)
И так планирую делать в каждом методе, т.е использовать шаблонный метод connectDB();
teddy Отправлено: 11 Июня, 2013 - 15:50:59 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
DelphinPRO
Отписались в тему Хорошо прочел почти тоже самое в статье на хабре, ваш ответ и прочитанное мною в статье совместилось в одно целое и таким образом я окончательно нашел ответ на этот вопрос! )


А вообще радует, что есть такой форум и люди, которые помогают ) Что бы я без вас делал... Разработчикам данного проекта отдельное спасибо, вы просто молодцы! Улыбка
teddy Отправлено: 11 Июня, 2013 - 15:35:16 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
LIME
Да, ссылку смотрел ) мульти запросы встречал ) Думал подсветка соответствует каким то общим правилам интерператора )
teddy Отправлено: 11 Июня, 2013 - 15:27:06 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
esterio
Всё норм, такое бывает )

LIME
Интересно ) получается подсветка глючная? Если сравнить два последних запроса от esterio, то в предпоследнем подстветка получается такой, что DROP TABLE выглядит такого же цвета, как и SELECT, FROM и WHERE, что наводит на мысль "послушного исполнения скрипта", а во втором примере уже подсветка иная, т.е уже DROP TABLE подсвечивается как обычный текст и игнорируется в запросе.. как то так
teddy Отправлено: 11 Июня, 2013 - 14:48:26 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
LIME пишет:
тебе надо уяснить одно простую весч
сервер бд работает отдельно
и строка запроса передается в него
именно строка
которую формирует пых
и экранированные символы бд воспринимает как часть значения

ага, получается я просто не совсем правильно представлял себе как оно работает )


esterio
Спасибо за подробное описание ) заметил разницу в подсветке SQL запроса, в последнем случае запрос на "удаление" не подсвечивается как "удаляющий"... надеюсь правильно объяснил то, что хотел сказать )) Почти такие же примеры увидел в одной статье про sql иньекции на хабре )
teddy Отправлено: 11 Июня, 2013 - 13:57:24 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
LIME
А-а, теперь понятно.. тоесть экранирование действует в момент выполнения запроса, если я правильно понял, таким образом "внедренный" скрипт остается в ауте в момент запроса и не срабатывает, а то что он добавится в БД - это не страшно...

И если я все правильно понял, то выходит убил сразу двух зайцев. Недавно задался вопросом: Если все в БД добавляется со слешами, то как на этом форуме люди спокойно публикуют различные скрипты и БД ни чуть не страдает от этого и визуально все норм выглядит без всяких слешей...

ну чтож, закрываем тему наверное )) Спасибо ещё раз, теперь могу кодить дальше.. а то тупил почти 3 дня )
teddy Отправлено: 11 Июня, 2013 - 13:43:50 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
DeepVarvar пишет:
Бред.

Знаю, что бред ) затем и обратился на форум )) не знаю, бывает у меня такое, чего то не понимаю в упор, но спустя некоторое время начинаю смеяться над самим собой )) ну это тогда когда уже врубаюсь в тему ))

DeepVarvar пишет:
Так и должно быть.

Странно, я почему то думал в БД должно добавляться уже экранированные данные, иначе какой толк от функции? Если мне не изменяет память, то видел даже своими глазами в одном из обучающих видеоуроков... месяца 2-3 назад было конечно, поэтому могу ошибаться...

LIME пишет:
baseCMS::addArticle($title, $content, $date, $author);

Ах вот оно что, точно, видел такое )) Но почему то в голове крутилась мысль "mysqli же более совершеннее чем mysql", значит там все должно быть проще! ) Оно и сбивало меня с толку... я думал что это бред и есть более простое решение спасибо за помощь! )
teddy Отправлено: 11 Июня, 2013 - 13:32:01 • Тема: MySQLi при ООП • Форум: Вопросы новичков

Ответов: 49
Просмотров: 1706
LIME
Мне проще будет в каждом методе открыть/закрыть соединение, стыдно признать, но в упор не понимаю что к чему...

LIME пишет:
set_charset('utf8');

Спасибо учту, а как быть с экранированием спец. символов? В конце первого поста описал проблему, как можно ее вылечить? Если использую mysql_real_escape_string или $mysqli->real_escape_string() и вывожу результат при помощи echo, то экранируется нормально, но в БД данные добавляются уже без экранирования...

Страниц (98): В начало « ... 81 82 83 84 [85] 86 87 88 89 ... » В конец
Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB