MySQL vs Mysqli

Можеш ли да разясниш малко какво и как работят mysqli фунциите в PHP и защо да ги предпочитаме пред обикновенните mysql фунции. Също така кога да се придържаме към тяхното използване и кога не, а освен предимства пред обикновените mysql функции имат ли и недостатъци?

12 мнения по „MySQL vs Mysqli

  1. Асен Тричков

    От известно време се чудех какви ли недостатъци има mysqli благодаря за отговора 🙂

  2. go_fire

    Едно и половина неща не разбрах. Първото, отърваваме ли се от SET NAMES UTF8? Май не. И второто, след като има prepared statements, значи не трябват неща като адслашес и другите там риъл стринг и т.н.? Това май да, защото така не ни е зор за инжекции, такива не ще да има.

  3. gatakka Автор

    SET NAMES UTF8 остава до версия 6 на PHP.
    няма нужда от addshlashes и подобни. Няма как да мине инжекция при prepared

  4. vbox7

    Имам голям проблем при тоя неден mysqli – писна ми. 2 вечери подред се мъча да оправя проблема и пак неиска.
    Имам цикъл, в който имам това.

    $query_select_m->execute();
    $query_select_m->bind_result($id,$user);
    while($query_select_m->fetch()) {

    „$query43->bind_param(‘i’, $id);
    $query43->execute();
    $query43->bind_result($title,$video,$desc);
    $query43->fetch();“

    }

    Но не ми извежда резултатите от $query43 който се намират в цикъла .. Видях в нета, че този скапан проблем не е само при мен и имало някакви малки класове които реашавали проблема, но аз лично не знам как да се оправя. Ще помоля Иван, ако може да ми помогне, ще съм му много благодарен!

  5. gatakka Автор

    Част от един мой клас
    public function bindParams($types, $param) {
    return call_user_func_array(‘mysqli_stmt_bind_param’, array_merge(array($this->stmt, $types), $this->refValues($param)));
    }

    public function fetchAll() {
    $this->stmt->execute();
    $this->stmt->store_result();
    $meta = $this->stmt->result_metadata();
    $ret = array();
    while ($column = $meta->fetch_field()) {
    $bindVarsArray[] = &$results[$column->name];
    }
    call_user_func_array(array($this->stmt, ‘bind_result’), $bindVarsArray);
    while ($this->stmt->fetch()) {
    foreach ($results as $k => $v) {
    $row_tmb[$k] = $v;
    }
    $ret[] = $row_tmb;
    }
    $this->stmt->free_result();
    $this->stmt->close();

    return $ret;
    }
    private function refValues($arr) {
    $refs = array();
    foreach ($arr as $key => $value)
    $refs[$key] = &$arr[$key];
    return $refs;
    }
    предполагам няма нужда да обеснявам какво е $this->stmp

  6. vbox7

    За пореден път се отзоваваш на всеки един. Рядко има такива хора като теб да помагат и споделят с удоволствие!
    Но аз много не съм на ясно с класовете и бих те помолил, ако имаш желание да ми обясниш как да го приложа в примера който дадох 🙂 ?

    Ако не е проблем разбирасе! И тази помощ до тук ми е полезна. През това време аз се мъча да го сработя..

  7. gatakka Автор

    Това не е клас, а е част от него.
    Какво точно не разбираш на prepare statement?
    Има перфектна документация и примери?

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *