fetchColumn для mysqli

NikitOS

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

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

Буду благодарен за любой пинок :)
 

NikitOS

Иномирянин
В общем, мой мозг отключился.
Помогите переделать это под 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();
    }
}
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
@NikitOS, да сдалось нам тебя в чем-то уговаривать, вселенский баланс нас упаси. Просто ты так и не сказал в чем была необходимость, а у нас такого, чтобы просто так переписать один драйвер на другой без четкой необходимости (например mysql устарел и выпилился) не бывает.
 

Фанат

oncle terrible
Команда форума
Ладно, уговорили, останусь на PDO
Учитывая, что даже примитивная функция в 2 строчки стала для тебя непреодолимым препятствием, переписать query у тебя не получится даже за год.
Так что да, лучше оставйся на ПДО.
 

Фанат

oncle terrible
Команда форума
Это не комплимент, а объективная констатация факта. функция fetchColumn - это синтаксический сахар, для кода, который хоть раз в жизни, но требовался каждому разработчику. Если понимать, что эта функция делает, то реализовать её - дело 30 секунд.
Если она вызывает у тебя затреднения, то мы можем сделать вывод, что РНР ты не знаешь от слова совсем.
Реализация же query() на mysqli - это даже для середнячка может оказаться непосильной задачей, если не обрадать скилом "гуглить" уровня "джедай". То есть тебе объективно не под силу.

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

Фанат

oncle terrible
Команда форума
Это не мой говнокод
Ну и конкретно эта реплика, про название метода, не к тебе персонально относилась.

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