mysqli или PDO - каковы за и против? [закрытый]

Да, возможно. Используйте для этого ProcessInfo.

Простой пример:

let dic = ProcessInfo.processInfo.environment
if dic["VAR"] != nil {

}
342
задан Polsonby 6 March 2009 в 06:52
поделиться

9 ответов

Ну, Вы могли спорить с объектно-ориентированным аспектом, подготовленными операторами, то, что это становится стандартом, и т.д. Но я знаю, что большую часть времени, убеждая кого-то работает лучше с уничтожающей функцией. Таким образом, там это:

А действительно хорошая вещь с PDO - Вы, может выбрать данные, введя его автоматически в объекте. Если Вы не хотите использовать ORM (причина, это - справедливое быстрый сценарий), но Вам действительно нравится объектное отображение, это ДЕЙСТВИТЕЛЬНО прохладно:

class Student {

    public $id;
    public $first_name;
    public $last_name

    public function getFullName() {
        return $this->first_name.' '.$this->last_name
    }
}

try 
{
    $dbh = new PDO("mysql:host=$hostname;dbname=school", $username, $password)

    $stmt = $dbh->query("SELECT * FROM students");

    /* MAGIC HAPPENS HERE */

    $stmt->setFetchMode(PDO::FETCH_INTO, new Student);


    foreach($stmt as $student)
    {
        echo $student->getFullName().'<br />';
    } 

    $dbh = null;
}
catch(PDOException $e)
{
    echo $e->getMessage();
}
243
ответ дан e-satis 23 November 2019 в 00:33
поделиться

Одна вещь PDO имеет тот MySQLi, не делает этого, мне действительно нравится, способность PDO возвратить результат как объект указанного типа класса (например, $pdo->fetchObject('MyClass')). MySQLi fetch_object() только возвратится stdClass объект.

3
ответ дан Ry- 23 November 2019 в 00:33
поделиться

Существует одна вещь иметь в виду.

Mysqli не поддерживает fetch_assoc () функция, которая возвратила бы столбцы с ключами, представляющими имена столбцов. Конечно, возможно записать Вашу собственную функцию, чтобы сделать это, это даже не очень длинно, но я имел действительно трудное время, пишущий его (для неверующих: если это кажется легким Вам, попробуйте его самостоятельно некоторое время и не обманывайте:))

-4
ответ дан michal kralik 23 November 2019 в 00:33
поделиться

Вот что-то еще для учета: На данный момент (PHP 5.2) библиотека PDO багги . Это полно странных ошибок. Например: прежде, чем сохранить PDOStatement в переменной, переменная должна быть unset() для предотвращения тонны ошибок. Большинство из них было зафиксировано в PHP 5.3, и они будут выпущены в начале 2009 года в PHP 5.3, который будет, вероятно, иметь много других ошибок. Необходимо сфокусироваться на использовании PDO для PHP 6.1, если Вы хотите стабильную версию и использующий PDO для PHP 5.3, если Вы хотите помочь сообществу.

15
ответ дан Tom 23 November 2019 в 00:33
поделиться

Лично я использую PDO, но я думаю, что это - главным образом вопрос предпочтения.

PDO имеет некоторые функции, которые помогают agains Внедрению SQL ( подготовленные операторы ), но если Вы осторожны со своим SQL, можно достигнуть этого с mysqli, также.

Перемещение в другую базу данных не является так причиной использовать PDO. Пока Вы не используете "специальные функции SQL", можно переключиться от одного DB до другого. Однако, как только Вы используете, например, "ВЫБОР... ОГРАНИЧЬТЕ 1 дюйм, Вы не можете перейти к SQL MS, где это - "ИЗБРАННЫЙ ЛУЧШИЙ 1...". Таким образом, это проблематично так или иначе.

5
ответ дан BlaM 23 November 2019 в 00:33
поделиться

Я начал использовать PDO, потому что поддержка оператора лучше, по-моему. Я использую уровень доступа к данным ActiveRecord-esque, и намного легче реализовать динамично сгенерированные операторы. Привязка параметров MySQLi должна быть сделана в единственной функции/вызове метода, поэтому если бы Вы не знаете до времени выполнения, сколько параметров требуется связать, Вы вынуждены использовать call_user_func_array() (я полагаю, что это - правильное имя функции) для выборов. И забудьте о простой динамической привязке результата.

Больше всего, мне нравится PDO, потому что это - очень разумный уровень абстракции. Это просто в использовании он в абсолютно абстрактных системах, где Вы не хотите писать SQL, но это также облегчает использовать более оптимизированный, чистый тип запроса системы, или к смешиванию и подгонке два.

25
ответ дан Brian Warshaw 23 November 2019 в 00:33
поделиться

PDO является стандартом, это - то, что большинство разработчиков будет ожидать использовать. mysqli был по существу сделанным на заказ решением конкретной проблемы, но он имеет все проблемы других определенных для DBMS библиотек. PDO - то, куда вся тяжелая работа и умные взгляды пойдут.

17
ответ дан Dave Gregory 23 November 2019 в 00:33
поделиться

Перемещение приложения от одной базы данных до другого не очень распространено, но рано или поздно можно работать над другим проектом с помощью различного RDBMS. Если Вы будете дома с PDO тогда то, по крайней мере, будет одна вещь меньше для изучения в той точке.

Кроме этого я нахожу API PDO немного более интуитивным, и это чувствует себя более действительно объектно-ориентированным. mysqli чувствует, что это - просто процедурный API, который был воплощен, если Вы знаете то, что я имею в виду. Короче говоря, я нахожу PDO легче работать с, но это, конечно, субъективно.

57
ответ дан Theo 23 November 2019 в 00:33
поделиться

В смысле скорости выполнения MySQLi выигрывает, но если у вас нет хорошей оболочки, использующей MySQLi, его функции имеют дело с подготовленными заявления ужасны.

В моем распоряжении все еще есть ошибки, но если кто-то хочет, здесь это .

Короче говоря, если вы ищете увеличение скорости, тогда MySQLi; если вы хотите простоты использования, то PDO.

6
ответ дан Ry- 23 November 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: