<rmcreative>

RSS

Удобная функция для тех, кто хочет использовать Yii и писать SQL

21 июня 2012

Использовать можно так:

$posts = command('SELECT * FROM post WHERE id IN(%s)', array(1, 2, 3))->queryAll();
foreach($posts as $post) {
  print_r($post);
}
 
$id = command('SELECT id FROM post WHERE name = %s AND status=%d', 'Alexander', 10)->queryScalar();
echo $id;
 
$post = command('SELECT * FROM post WHERE id = %d', 101)->queryRow();
print_r($post);

Комментарии RSS

  1. №6374
    someson
    someson 22 июня 2012 г., 2:31:22

    $values как параметр cледовало бы перевести в array $values = (array) $values; , раз уж мы без проверки is_array суём его в foreach. Иначе получим warning.

  2. №6375
    Sam
    Sam 22 июня 2012 г., 3:38:03

    Действительно. Спасибо.

  3. №6376
    Max
    Max 22 июня 2012 г., 6:40:55

    имхо параметризованные запросы вроде как рекомендуются вместо quote?

  4. №6377
    Ncs
    Ncs 22 июня 2012 г., 13:56:53

    Yii::app()->db->command() Может лучше CDBConnetcion рассширить? Просто если несолько баз в приложении, то фукнция вяжется все равно на db->

  5. №6378
    Sam
    Sam 22 июня 2012 г., 16:01:12

    Max, смотря для чего.

    Ncs, это будет уже не так кратко. Поправьте по вкусу.

  6. №6380
    RusAlex
    RusAlex 23 июня 2012 г., 11:26:02

    Удобно, но уже не prepared query.

    Надо params включить, чтобы и удобно и секурно.

  7. №6381
    Максим
    Максим 25 июня 2012 г., 16:44:12

    2RusAlex, Хм

    command('select * from table where a=?')->queryAll(array('test'));
  8. №6392
    S1lent
    S1lent 30 июня 2012 г., 17:40:55

    А как бы еще сюда прикрутить с аналогичной красотой и простотой кэширование...

  9. №11285
    Valeriu
    Valeriu 03 июля 2018 г., 1:52:39

    Спасибо Александр, очень полезная функция!

  1. Почта опубликована не будет.

  2. Можно использовать синтаксис Markdown или HTML.

  3. Введите ответ в поле. Щёлкните, чтобы получить другую задачу.