ФорумПрограммированиеPHP для идиотов → Испльзование mysqli

Испльзование mysqli

  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 14 октября 2010 г. 9:46

    При использовании mysqli надобность в фильтрации отпадает?

    $stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)"); 
    $stmt->bind_param('sssd', $code, $language, $official, $percent);

    $code = 'DEU';
    $language = 'Bavarian';
    $official = "F";
    $percent = 11.2;



    а если например это такой запрос

    $mysqli->query("DELETE FROM CountryLanguage WHERE Language='1'");


    к единице не нужно приминять intval?
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 14 октября 2010 г. 9:48, спустя 1 минуту 35 секунд

    если еденица статически забита - не, не нужно. Если от пользователя - через плейсхолдеры ее подставляй, как в первом примере
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 14 октября 2010 г. 9:52, спустя 4 минуты 50 секунд

    $stm $mysqli->query("DELETE FROM CountryLanguage WHERE Language='?'");
    $stmt->bind_param('d', $int);
    $int = 1;


    так?
    Спустя 59 сек.
    если это SELECT , то результат будет в $stmt ?
  • kostyl

    Сообщения: 5209 Репутация: N Группа: Джедаи

    Spritz 14 октября 2010 г. 9:59, спустя 6 минут 56 секунд

    $mysqli->query("DELETE FROM CountryLanguage WHERE Language=?");
    $int = 1;
    $stmt->bind_param('s', $int);

    >>DELETE FROM CountryLanguage WHERE Language='1'
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 14 октября 2010 г. 10:00, спустя 33 секунды

    читай ман, там все написано
  • Абырвалг

    Сообщения: 6480 Репутация: N Группа: Джедаи

    Spritz 14 октября 2010 г. 10:04, спустя 4 минуты 4 секунды

    я думаю похуй
  • artoodetoo

    Сообщения: 5146 Репутация: N Группа: в ухо

    Spritz 14 октября 2010 г. 10:06, спустя 2 минуты 28 секунд

    в сравнении с общим временем выполнения запроса пренебрежимо похуй
    ιιlllιlllι унц-унц
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 14 октября 2010 г. 10:47, спустя 40 минут 17 секунд

    Есть разница при работе через плейсхолдер и при ручном обертывании в mysql_real_escape_string?

    Через плейсхолдеры prepare-statement? Есть. Смотря сколько запросов через один prepare идут.

    Вы используете mysqli и вместе с тем mysql_real_escape_string?
  • phpdude

    Сообщения: 26645 Репутация: N Группа: в ухо

    Spritz 14 октября 2010 г. 11:00, спустя 13 минут

    Через плейсхолдеры prepare-statement? Есть. Смотря сколько запросов через один prepare идут.

    к тебе сразу вопрос, вот смотри. есть запросы с плейсхолдерами, да.

    по сути база если получает запросы от приложения, то для нее они все ОДИНАКОВЫЕ, так вот, внимание, вопрос - будет ли это ускорять прилоежние, ведь в теории база может прокешировать и план выполнения и парсинг запроса, а только выполнять план с новыми данными и все, имхо это должно давать прирост.

    вопрос - насколько умен в этмо случае мускуль? никто не вникал? будет ли прирост или только тормоза изза дополнительных запросов на сервер для биндинга и тп?

    интересуют офф данные, а не имха)) имха у меня свои :)
    Сапожник без сапог
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 14 октября 2010 г. 11:33, спустя 33 минуты 9 секунд

    не совсем понял до конца.

    для одного препарестатмента парсинг и план выполнения будет один на все запросы через него.
    другое дело, что хрен этот препарестатмент другому процессу передашь (или передашь?).
    а будет ли кэшировать мускул этот шаблон, для того, что если другой процесс сделает такой же PREPARE - хз.
    Спустя 224 сек.
    Кроме того:
    Before MySQL 5.1.17, prepared statements do not use the query cache. As of 5.1.17, prepared statements use the query cache under the conditions described in Section 7.6.3.1, “How the Query Cache Operates”.
  • phpdude

    Сообщения: 26645 Репутация: N Группа: в ухо

    Spritz 14 октября 2010 г. 11:36, спустя 2 минуты 44 секунды

    PREPARE - хз.

    да, я про это и говорил, предеать другому процессу конечно совсем врядли)) а про их некеширование из статьи полный пиздец))))

    видимо пока в мускуле выгоды от них осоой нету
    Сапожник без сапог
  • master

    Сообщения: 3242 Репутация: N Группа: Джедаи

    Spritz 14 октября 2010 г. 13:24, спустя 1 час 48 минут 9 секунд

    СНАЧАЛА делается рабочий функционал
    ПОТОМ оптимизируется

    Никакие prepare statements не дадут такого прироста, какой могут дать хранимые процедуры.
    Вообще я бы советовал не париться сабжем. Ибо.
    не всё полезно, что в swap полезло
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 14 октября 2010 г. 13:52, спустя 28 минут 18 секунд

    я устанавлюваю так соединение с базой

    $_DB = new mysqli('localhost', 'name', 'пас', 'имя');
    $_DB->query('SET NAMES utf8')
    ;

    в отдельном файле, как делал при mysql

    затем в классе пытаюсь выполнить запрос

    if ($result = $_DB->query("SELECT * FROM ххх LIMIT 1")) {

    return $result->fetch_array();
    $result->close();

    } else {
    return false;
    }


    но увы ошибки, конекта как быдто и нет. А когда код подключения вписываю перед if ($result = … то работает . В чем дело?
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 14 октября 2010 г. 14:21, спустя 29 минут 31 секунду

    хз как это делать
    Спустя 56 сек.
    глобальные переменный ведь отключены , а почему другой файл? Ведь я делаю инклуд к основному
  • Nox

    Сообщения: 204 Репутация: N Группа: Кто попало

    Spritz 14 октября 2010 г. 14:47, спустя 25 минут 51 секунду

    я читал все это, почему объект uncloneable ??

Пожалуйста, авторизуйтесь, чтобы написать комментарий!