Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #31 (permalink)  
Старый 26.02.2010, 14:22
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от e1f
запросы будут формироватся пользователем вашей CMS
Да. Будет стандартный синтаксис (шаблоны написания запросов), все остальное - функции не реазлизованные на той или инной БД берет на себя модуль. Например SELECT INTO не везде одиноков, но по стандарту он таков: "SELECT ... INTO ... FROM ......"
Сообщение от e1f
Как будет реализован квотинг данных?
А вот над этим я думаю, пытаюсь вообще все на автомат поставить. Потому как задолбало постоянно писать типа
$db->q("SELECT * FROM ... WHERE ...='".sql_escape($data)."'"


Может есть идеи как избавиться от функции ?
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #32 (permalink)  
Старый 26.02.2010, 14:26
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от PeaceCoder
Может есть идеи как избавиться от функции ?
От sql_escape?
Код:
PDO::prepare
Ответить с цитированием
  #33 (permalink)  
Старый 26.02.2010, 15:05
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

bind_param
Ответить с цитированием
  #34 (permalink)  
Старый 26.02.2010, 16:00
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Цитата:
Да. Будет стандартный синтаксис
Т.е. запрос будет в виде строки а потом будет парсится регулярками и приводиться к нужному виду?

Сообщение от e1f Посмотреть сообщение
Если делать грамотный Storage-wrapper, то от запросов везде, кроме как в классах, реализующих функционал для каждого типа БД, надо бежать как от огня.
Человек дело говорит! PeaceCoder зря вы мой призыв обратить внимание на Zend не услышали. Посмотрите как там сделано:

$params = array(
	'host'     => 'localhost',
	'username' => 'root',
	'password' => '',
	'dbname'   => 'drupal'
);

// Инициализация адаптера с указанием нужного диалекта
$db = Zend_Db::factory('Pdo_Mysql', $params);

// Выполнение запроса
$result = $db->fetchAll(
	$db	->	select()
		->	from('users')
		->	order('uid')
		->	limit(15)
);
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)
Ответить с цитированием
  #35 (permalink)  
Старый 26.02.2010, 16:14
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Kolyaj
От sql_escape?
Идейка понравилась, думал что-то в этом роде но не думал что это будет удобно...
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #36 (permalink)  
Старый 26.02.2010, 17:52
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Tim
зря вы мой призыв обратить внимание на Zend не услышали
услышал. пока размышляю что будет лучше. то как построены зенд запросы и хорошо и плохо. хорошо - мы в нутри класса имеем четкую структуру запроса, плохо такое формирование уменьшает кпд программиста, т.к. постоянно повторятся array(name=>adwd,...) утомляет
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #37 (permalink)  
Старый 26.02.2010, 18:34
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Tim
Посмотрите как там сделано
А вот кста, я так и не понял как сформировать запрос с сабзапросом?
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт
Ответить с цитированием
  #38 (permalink)  
Старый 27.02.2010, 00:41
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Цитата:
А вот кста, я так и не понял как сформировать запрос с сабзапросом?
// Запрос номер 1 (вложенный)
$query1 = $db	->	select()
				->	from('blocks', 'delta')
				->	where('bid = 2');

// Запрос номер 2
$query2 = $db	->	select()
				->	from('users')
				->	where('uid = ?' , $query1)
				->	limit(2);

// Посмотрим как выглядит строка запроса
print $query2->assemble();

/* Вот она:
SELECT users.* FROM users WHERE (uid = (SELECT blocks.delta FROM blocks WHERE (bid = 2))) LIMIT 2
*/

// Теперь выполним этот запрос
$result = $db->fetchAll($query2);

// Распечатаем массив результатов
print_r($result);


Теперь обратим внимание на строку:
->	where('uid = ?' , $query1)

Запрос 1 будет подставлен вместо знака вопроса. В принципе, можно использовать и конкатенацию, но тогда добавлять скобки придётся руками.
->	where('uid = (' . $query1 . ')' )


Ещё можно так:
->	where('uid = (SELECT delta FROM blocks WHERE bid = 2)')

но это уже совсем быдлокодерство.

P.S.: Сдавайтесь PeaceCoder Zend рулит. Хотя, конечно есть и минусы: они перестраховщики большие - много линних проверок и перепроверок.
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)

Последний раз редактировалось Tim, 27.02.2010 в 01:04.
Ответить с цитированием
  #39 (permalink)  
Старый 27.02.2010, 01:41
Аватар для PeaceCoder
Профессор
Отправить личное сообщение для PeaceCoder Посмотреть профиль Найти все сообщения от PeaceCoder
 
Регистрация: 15.12.2009
Сообщений: 742

Сообщение от Tim
Запрос 1 будет подставлен вместо знака вопроса. В принципе, можно использовать и конкатенацию,
только вот интересно как это происходит конкатенация если на выходе постоянно обьект, а не строка ? Или в пхп принцип -> иной return не влияет на эту команду ?
Сообщение от Tim
Сдавайтесь PeaceCoder Zend рулит
Рулит но не в том направлении в котором буду делать я. На счет сабов так и подумал...
__________________
Настоящий программист думает и осознает сам решение задачи, а не копирует другие мысли, не осознавая их (c)
Относись к человеку так же, как хотелось бы отношения к себе (с)
Все нужно там, где оно нужно, а все не нужно нигде (с) Gozar
B~Vladi: А кто такой JavaScript стрелок?! micscr: это тот, кто не jQuery танкист.
Программы становятся медленнее быстрее, чем компьютеры становятся быстрее (с) Никлаус Вирт

Последний раз редактировалось PeaceCoder, 27.02.2010 в 01:44.
Ответить с цитированием
  #40 (permalink)  
Старый 27.02.2010, 02:46
Аватар для Tim
Tim Tim вне форума
Профессор
Отправить личное сообщение для Tim Посмотреть профиль Найти все сообщения от Tim
 
Регистрация: 05.06.2009
Сообщений: 1,703

Цитата:
только вот интересно как это происходит конкатенация если на выходе постоянно обьект, а не строка ?
Нужно определить в классе метод __toString() и он будет автоматически вызываться. Беглый осмотр кода кода Zend показал, что так оно и сделано.

class my_class {

	function __toString()
	{
		return 'Вдруг как в сказке скрипнула дверь ;)';
	}
}

$my_obj = new my_class();

print $my_obj;
__________________
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.
Самые главные в жизни вещи - не вещи! (было написано на одном гараже =)

Последний раз редактировалось Tim, 27.02.2010 в 03:11.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа js +php без обновления страницы Jekel Javascript под браузер 18 29.11.2009 20:17
PHP работа с датой twolf Серверные языки и технологии 11 18.02.2009 01:43