fetchColumn для mysqli

  • Автор темы Автор темы NikitOS
  • Дата начала Дата начала

NikitOS

Иномирянин
Всем привет!

Есть код, он использует подключение через PDO. Я переделываю его под mysqli.
В этом коде есть такая функция:
PHP:
public function column($sql, $params = []) {
    $result = $this->query($sql, $params);
    return $result->fetchColumn();
}

После копания в гугле я не нашел, чтобы в mysqli была функция fetchColumn, соответственно код работать не будет.
А чем ее можно заменить?

Буду благодарен за любой пинок :)
 
В общем, мой мозг отключился.
Помогите переделать это под mysql:
PHP:
<?php

namespace src\MV\lib;

use PDO;

class Db {

    protected $db;
    
    public function __construct() {
        $config = require 'src/MV/config/db.php';
        $this->db = new PDO('mysql:host='.$config['host'].';dbname='.$config['name'].'', $config['user'], $config['password']);
    }

    public function query($sql, $params = []) {
        $stmt = $this->db->prepare($sql);
        if (!empty($params)) {
            foreach ($params as $key => $val) {
                $stmt->bindValue(':'.$key, $val);
            }
        }
        $stmt->execute();
        return $stmt;
    }

    public function row($sql, $params = []) {
        $result = $this->query($sql, $params);
        return $result->fetchAll(PDO::FETCH_ASSOC);
    }

    public function column($sql, $params = []) {
        $result = $this->query($sql, $params);
        return $result->fetchColumn();
    }
}
 
@NikitOS, да сдалось нам тебя в чем-то уговаривать, вселенский баланс нас упаси. Просто ты так и не сказал в чем была необходимость, а у нас такого, чтобы просто так переписать один драйвер на другой без четкой необходимости (например mysql устарел и выпилился) не бывает.
 
Ладно, уговорили, останусь на PDO
Учитывая, что даже примитивная функция в 2 строчки стала для тебя непреодолимым препятствием, переписать query у тебя не получится даже за год.
Так что да, лучше оставйся на ПДО.
 
Это не комплимент, а объективная констатация факта. функция fetchColumn - это синтаксический сахар, для кода, который хоть раз в жизни, но требовался каждому разработчику. Если понимать, что эта функция делает, то реализовать её - дело 30 секунд.
Если она вызывает у тебя затреднения, то мы можем сделать вывод, что РНР ты не знаешь от слова совсем.
Реализация же query() на mysqli - это даже для середнячка может оказаться непосильной задачей, если не обрадать скилом "гуглить" уровня "джедай". То есть тебе объективно не под силу.

И, кстати. за функцию row(), которая возвращает список, надо руки отрывать. Или чем оно там было написано.
 
Это не мой говнокод
Ну и конкретно эта реплика, про название метода, не к тебе персонально относилась.

row - единственное число, и метод с таким названием должен возвращать одну строку.
Есть программы, которые специально запутывают программный код, называются обфускаторы.
Ну вот здесь мы имеет такое запутывание, только добровольное.
 
Сверху