Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: MySQLi при ООП [2]

 PHP.SU

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


 Страниц (4): « 1 [2] 3 4 »   

> Без описания
teddy
Отправлено: 11 Июня, 2013 - 15:27:06
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




esterio
Всё норм, такое бывает )

LIME
Интересно ) получается подсветка глючная? Если сравнить два последних запроса от esterio, то в предпоследнем подстветка получается такой, что DROP TABLE выглядит такого же цвета, как и SELECT, FROM и WHERE, что наводит на мысль "послушного исполнения скрипта", а во втором примере уже подсветка иная, т.е уже DROP TABLE подсвечивается как обычный текст и игнорируется в запросе.. как то так
 
 Top
LIME
Отправлено: 11 Июня, 2013 - 15:32:29
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




во-первых интерпретатор не знает что на этом сайте есть подсветка и надо руководствоваться ей))
во-вторых это ограничение драйвера пыха
просто не выполняются несколько команд бд подряд через ;
для этого в mysqli есть отдельная ф-ция(см выше)
 
 Top
teddy
Отправлено: 11 Июня, 2013 - 15:35:16
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




LIME
Да, ссылку смотрел ) мульти запросы встречал ) Думал подсветка соответствует каким то общим правилам интерператора )
 
 Top
DelphinPRO
Отправлено: 11 Июня, 2013 - 15:43:48
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




teddy пишет:
Странно, я почему то думал в БД должно добавляться уже экранированные данные, иначе какой толк от функции?

Тут следует понять один момент. Экранирование - это указание синтаксическому анализатору о том, что экранированные символы не следует воспринимать как служебные. Если мы пишем в базу строку «string'string», то кавычку следует экранировать, т.к. это служебный символ, служащий для ограничения данных. Получая строку без экранирования, анализатор сочтет кавычку окончанием значения (строки данных), а дальше - либо инъекция, либо синтаксическая ошибка, смотря что подсунули. Если мы отдадим экранированную строку «string\'string», анализатор поймет, что кавычка - это просто текст, и запишет ее в базу как текст. Слеш в данном случае - служебная информация, и он в базу не попадает. в базе вы увидите свою строчку в чистом виде: «string'string».
Резюмируя: экранирование, это способ записать в базу управляющие символы как простой текст.


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
AlexAnder
Отправлено: 11 Июня, 2013 - 15:49:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




Цитата:
экранирование, это способ записать в базу управляющие символы как простой текст.

echo 'D'artanyan'; // => 'D\'artanyan'; or "D'artanyan";

(Отредактировано автором: 11 Июня, 2013 - 15:52:04)



-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
DelphinPRO
Отправлено: 11 Июня, 2013 - 15:50:41
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




AlexAnder, у нас дискуссия идет в контексте работы с БД Улыбка


-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
teddy
Отправлено: 11 Июня, 2013 - 15:50:59
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




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


А вообще радует, что есть такой форум и люди, которые помогают ) Что бы я без вас делал... Разработчикам данного проекта отдельное спасибо, вы просто молодцы! Улыбка
 
 Top
teddy
Отправлено: 12 Июня, 2013 - 18:38:51
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




Сделал чуть по другому, это нормально, что внутри каждого метода я пишу 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();
 
 Top
Мелкий Супермодератор
Отправлено: 12 Июня, 2013 - 18:48:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Кажется, вам уже указывали на (относительно) правильный путь - использовать singleton.


-----
PostgreSQL DBA
 
 Top
AlexAnder
Отправлено: 12 Июня, 2013 - 19:38:37
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




Цитата:
PHP:
скопировать код в буфер обмена
  1. function AddCar($model, $year, $speed)


Цитата:
PHP:
скопировать код в буфер обмена
  1. Cars::AddCar("model","year","speed");


Однако Однако Однако Однако Однако


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
teddy
Отправлено: 12 Июня, 2013 - 19:51:24
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




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

AlexAnder
Что удивительного то? )
 
 Top
AlexAnder
Отправлено: 12 Июня, 2013 - 19:52:57
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 915
Дата рег-ции: Авг. 2012  
Откуда: Россия


Помог: 34 раз(а)




teddy пишет:
Что удивительного то? )

Метод не объявлен как статический, а обращаетесь через ::
(Добавление)
T_PAAMAYIM_NEKUDOTAYIM


-----
Оказывается, недостаточно читать справочники, чтобы правильно писать коды. sadex ©

Форумы стали местом обучения программированию, а не решения трудных вопросов. KingStar ©
 
 Top
vanicon
Отправлено: 12 Июня, 2013 - 19:57:50
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 808
Дата рег-ции: Янв. 2010  
Откуда: Самара


Помог: 17 раз(а)




teddy
Да, singleton очень часто используют там где не надо, но в данном случае singleton вполне уместен...
И не надо быть фанатом паттернов или же наоборот, просто надо думать своей головой, а не паттернами...


-----
Так было, так есть и так будет
 
 Top
teddy
Отправлено: 12 Июня, 2013 - 20:06:06
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




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

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

Информации в сети много, порой ваще не понимаешь что делать и как, пока собственные шишки не набьешь )
 
 Top
LIME
Отправлено: 12 Июня, 2013 - 20:08:39
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




teddy пишет:
во всяком случае у меня нет подобной ошибки...
 
 Top
Страниц (4): « 1 [2] 3 4 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB