Здравствуйте, у меня ошибка PDO в PHP MySQL, и я не знаю, что делать. Это какая-то конфигурация? Используйте easyphp grateful

Файл соединений .php

<?php
abstract class Conexao
{
    const USER = "root";
    const PASS = "";
    const DB   = "pare_aqui_db";
    const HOST = "localhost";
    private static $instancia = null;

    private static function conectar()
    {
        try
        {
            if(self::$instancia == null):
                $sqlPDO = "mysql:host=".self::HOST.";dbname=".self::DB;
                self::$instancia == new PDO( $sqlPDO , self::USER , self::PASS );
                self::$instancia->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
                self::$instancia->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
            endif;
        }
        catch(PDOException $erro_conecta){echo "erro".$erro_conecta->getMessage();}
        return self::$instancia;
    }

    protected static function getDB()
    {
        return self::conectar();        
    }
}
 ?>

Ошибка при тестировании страницы в Chrome Неустранимая ошибка: вызов функции-члена setAttribute () для не-объекта в C: \ EasyPHP-12.1 \ www \ pare_aqui_web_service \ Dconecta.class.php в строке 17

Подготовка () также не работает

1
user2052139 7 Фев 2013 в 23:40

1 ответ

Лучший ответ
self::$instancia == new

Не устанавливает переменную. Следовательно, self::$instancia->setAttribute вызывает ошибку, потому что вы выполняете (NULL)->setAttribute не на объекте.

Очевидно, это была опечатка, но на всякий случай: == - оператор компаратора; на самом деле вы ищете =, который является оператором присваивания ; поэтому правильный код:

self::$instancia = new PDO( $sqlPDO , self::USER , self::PASS );
2
Shoe 7 Фев 2013 в 23:42
1
Возможно, вы захотите предложить, что оператору следует сделать, чтобы эта работа работала?
 – 
Colin M
7 Фев 2013 в 23:43
@ColinMorelli, дай мне время
 – 
Shoe
7 Фев 2013 в 23:44