перестал работать pdo execute()

166
10 февраля 2019, 15:20

После переустановки open server, перестал работать метод execute() php7.

запрос:

$sql = 'SELECT count(*) as count FROM records WHERE hiddenRecord = 0';

массив поступающий в функцию SqlExecute() пустой.

функция обработки:

private function SqlExecute($sql = '', $array = [])
{
    if($sql != '')
    {
        $Query = $this->Connect();
        if($Query != null)
        {
            $Query->prepare($sql);
            foreach($array as $key => $str)
            {
                if(is_numeric($str))
                {
                    $Query->bindParam($key, $array[$key], PDO::PARAM_INT);
                }
                elseif(is_string($str))
                {
                    $Query->bindParam($key, $array[$key], PDO::PARAM_STR);
                }
            }
            $Query->execute();
            if($Query->rowCount() > 0)
            {
                return [
                    'count' => $Query->rowCount(),
                    'lastId' => $this->Connect()->lastInsertId(),
                    'result' => $Query,
                    'status' => true,
                ];
            }
            else
            {
                return [
                    'count' => 0,
                    'lastId' => 0,
                    'result' => '',
                    'status' => false,
                ];
            }
        }
    }
    return [
        'count' => 0,
        'status' => false,
    ];
}
// Соединение.
private function Connect()
{
    static $ini__li;
    if($ini__li === null)
    {
        try
        {
            $ini__li = new PDO(
                $this->base,
                $this->user,
                $this->pass
            );
            $ini__li->exec('SET NAMES UTF8');
        }
        catch(PDOException $e)
        {
            $ini__li = null;
        }
    }
    return $ini__li;
}

Выводимая ошибка

Fatal error: Uncaught Error: Call to undefined method PDO::execute()

Answer 1
$Query = $this->Connect();

Здесь вы создаете объект PDO.

далее подготавливаете выражение

$Query->prepare($sql); 

Данное выражение возвращает экземпляр PDOStatement.
Далее вы пытаетесь приложить методы bindParam и execute к объекту PDO, хотя должны сделать что-то вроде

$stmt = $Query->prepare($sql); 
$stmt->bindParam(...)
$stmt->execute();
READ ALSO
Вывести массив в виде строки

Вывести массив в виде строки

Данный код выводит

177
Ошибки Cannot read property 'fn' и Uncaught TypeError: $(…) - как исправить?

Ошибки Cannot read property 'fn' и Uncaught TypeError: $(…) - как исправить?

Есть на wordpress сайте страница калькулятора, где подключена библиотека formatterjs для корректного ввода телефона по патерну

193
Как удалить кавычки из строки php?

Как удалить кавычки из строки php?

Приходят данные из базы:

495
Регулярные выражения: исключить буквы и оставить некоторые символы PHP

Регулярные выражения: исключить буквы и оставить некоторые символы PHP

Помогите составить регулярное выражение, которое проверяет строку на то, чтобы в ней были только цифры(от 7 до 15), но также среди цифр могли...

190