За последние 24 часа нас посетили 34230 программистов и 1693 робота. Сейчас ищут 667 программистов ...

Именованные параметры PDO

Тема в разделе "PHP и базы данных", создана пользователем Alex_1984, 2 сен 2015.

  1. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    На Php.net есть пример
    Код (PHP):
    1. <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /></span><span class="syntaxcomment">/* Выполнение запроса с передачей ему массива параметров */<br /></span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT name, colour, calories<br />    FROM fruit<br />    WHERE calories < :calories AND colour = :colour'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$sth </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $dbh</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">prepare</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">ATTR_CURSOR </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">CURSOR_FWDONLY</span><span class="syntaxkeyword">));<br /></span><span class="syntaxdefault">$sth</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">execute</span><span class="syntaxkeyword">(array(</span><span class="syntaxstring">':calories'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> 150</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">':colour'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">'red'</span><span class="syntaxkeyword">));<br /></span><span class="syntaxdefault">$red </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $sth</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">$sth</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">execute</span><span class="syntaxkeyword">(array(</span><span class="syntaxstring">':calories'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> 175</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">':colour'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">'yellow'</span><span class="syntaxkeyword">));<br /></span><span class="syntaxdefault">$yellow </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $sth</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">?><br /></span></span>
    вопрос вот в чем, можно ли эти параметры поставить в LIMIT, типа того:
    Код (PHP):
    1. <span class="syntaxhtml"><br /><span class="syntaxdefault"><?php<br /></span><span class="syntaxcomment">/* Выполнение запроса с передачей ему массива параметров */<br /></span><span class="syntaxdefault">$sql </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> </span><span class="syntaxstring">'SELECT name, colour, calories<br />    FROM fruit<br />    WHERE calories < :calories AND colour = :colour LIMIT :start_row,:quantity'</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">$sth </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $dbh</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">prepare</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$sql</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> array</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">ATTR_CURSOR </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> PDO</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">CURSOR_FWDONLY</span><span class="syntaxkeyword">));<br /></span><span class="syntaxdefault">$sth</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">execute</span><span class="syntaxkeyword">(array(</span><span class="syntaxstring">':calories'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> 150</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">':colour'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> </span><span class="syntaxstring">'red'</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">':start_row'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> 1</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> </span><span class="syntaxstring">':quantity'</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">=></span><span class="syntaxdefault"> 5</span><span class="syntaxkeyword">));<br /></span><span class="syntaxdefault">$red </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $sth</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">fetchAll</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">?><br /></span></span>
    Пробовал, не работает, но может я что то не так делаю?
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. Alex_1984

    Alex_1984 Новичок

    С нами с:
    10 дек 2014
    Сообщения:
    133
    Симпатии:
    0
    Спасибо, помогло $conn->setAttribute( PDO::ATTR_EMULATE_PREPARES, false );