За последние 24 часа нас посетили 53732 программиста и 1772 робота. Сейчас ищут 822 программиста ...

Проблема с кавычками в запросе

Тема в разделе "MySQL", создана пользователем riaron, 19 сен 2015.

  1. riaron

    riaron Активный пользователь

    С нами с:
    1 окт 2014
    Сообщения:
    247
    Симпатии:
    4
    При выводе данных из базы, должен подставить в код из переменной.Правильный код '%$strtext%' но если я так сделаю строка не подставится.Есть ли в mysql аналог одинарных кавычек?
    вот код:
    Код (PHP):
    1. function maxcountsearch($sometext){
    2.         global $link;
    3.         $strtext=$sometext;
    4.         $Nsql="SELECT count(1) FROM sdvd_products WHERE title like `%$strtext%`";
    5.         $Nfetch=mysqli_query($link,$Nsql);
    6.         $NARR=mysqli_fetch_array($Nfetch);
    7.         $count=$NARR[0];
    8.         return $count;
    9.     } 
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    собери строку из частей

    Добавлено спустя 44 секунды:
    Ещё:
    1. кавычки не должны быть обратные у значений.

    2. нужно эскейпить, а то инъекция будет.
     
  3. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    Используйте подготавливаемые запросы и в экранировании отпадет необходимость.
    Код (PHP):
    1. <?php
    2. $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
    3. $sql = 'SELECT count(1) FROM `sdvd_products` WHERE `title` LIKE ?';
    4. $stmt = $mysqli->prepare($sql);
    5. $param = "%{$sometext}%";
    6. $stmt->bind_param('s', $param);
    7. $stmt->execute();
    8. $stmt->bind_result($result);
    9. $stmt->fetch();
    10. var_dump($result); 
     
  4. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    не всё так просто с ними.