Чтение документации на http://www.redbeanphp.com/querying он привел несколько примеров использования привязок параметров. Но у меня есть несколько вопросов, используя его:
Вопрос 1:
Вот оригинальный пример
R::getAll( 'SELECT * FROM page WHERE title = :title',
[':title' => 'home']
);
Но что, если я хочу заменить более одного значения для поиска в операторе SQL (например, добавить год)? Правильно ли написать:
R::getAll( 'SELECT * FROM page WHERE title = :title AND year > :year',
[':title' => 'home', ':year' => 2012]
);
Вопрос 2:
В этом примере используется знак вопроса? для замены
R::getRow( 'SELECT * FROM page WHERE title LIKE ? LIMIT 1',
[ '%Jazz%' ]
);
Если я хочу добавить год, должен ли он быть написан так, добавив второй знак вопроса в запросе?
R::getRow( 'SELECT * FROM page WHERE title LIKE ? AND year > ? LIMIT 1',
[ '%Jazz%', 2012 ]
);
Вопрос 3:
До сих пор документация приводила только примеры для функций getAll () и getRow (). Будет ли это также работать для R :: exec ()? Например:
R::exec( 'UPDATE page SET title="test" WHERE id = ? AND year > ?',
[ 101, 2012 ]
);
R::exec( 'UPDATE page SET title="test" WHERE id = :id AND year > :year',
[ ':id' => 101, ':year' => 2012 ]
);
Спасибо!
Все ваши ответы верны.
Если вы заглянули в файл rb.php, вы можете найти класс Facade и его функции:
public static function exec( $sql, $bindings = array() )
public static function getAll( $sql, $bindings = array() )
Второй параметр — это массив для привязок.
Других решений пока нет …