PDO ile tanımsız sınıf sürekli 'MYSQL_ATTR_INIT_COMMAND'

7 Cevap php
$db = new PDO('mysql:dbname=xnews;host=localhost;port=' . $LOCAL_DB_PORT, 
          $LOCAL_DB_USER, 
          $LOCAL_DB_PASS, 
          array(PDO::MYSQL_ATTR_INIT_COMMAND =>  "SET NAMES 'UTF8'")
      );

raporlar:

Undefined class constant 'MYSQL_ATTR_INIT_COMMAND'

Yeniden adlandırılır?

7 Cevap

Ben sadece PHP 5.2.6 ile aynı hata vardı, ve ben tüm yapmak zorunda php.ini (e.g. on Windows: C:\Windows\php.ini, ya da Ubuntu açmak için: /etc/php5/apache2/php.ini veya sg. Bu) gibi bir metin editörü, ve remove the semicolon from the following line in:

;extension=php_pdo_mysql.dll

Php.ini böyle olmazdı sonucunda Yani:

extension=php_pdo_mysql.dll

Bu benim sorunum çözüldü.

Ben sadece PHP 5.2 ile denedim, ve bu sürekli var gibi görünüyor:

var_dump(PDO::MYSQL_ATTR_INIT_COMMAND);

Bana verir:

int 1002


But it seems there is a bug in PHP 5.3, that causes this constant to not exists anymore -- or, at least, not when the mysqlnd driver is used (and it's the one that's configured by default)

Üzerinde önerildiği gibi this bug report, yerine doğrudan contant bir tamsayı 1002 değeri kullanmak olabilir, geçici bir çözüm herhalde ...

Bunu anlamak için kod kolaylaştırır gibi - ama geri kısa sürede sabit kullanarak gitmek gerektiğini unutmayın.

Bunu 1002 ile değiştirilmesi ya da sağ bir bağlantı açtıktan sonra, başlatma sorgu veren deneyebilirsiniz.

Bu sabah bu hata var, ben sadece taze Fedora 14 kurulumu yaptım ve geri çevrimiçi benim yerel projeler almak için çalışıyordu. Php-mysql eksikti, ben yum üzerinden yüklü ve hata şimdi gitti.

: Int değerini 1002 PHP 5.3.0 için çalışmak gibi görünüyor kullanma

public static function createDB() {
    $dbHost="localhost";
    $dbName="project";
    $dbUser="admin";
    $dbPassword="whatever";
    $dbOptions=array(1002 => 'SET NAMES utf8',);
    return new DB($dbHost, $dbName, $dbUser, $dbPassword,$dbOptions);
}

function createConnexion() {
    return new PDO(
        "mysql:host=$this->dbHost;dbname=$this->dbName",
        $this->dbUser,
        $this->dbPassword,
        $this->dbOptions); 
}

Benim için MySQL PDO eksikti, ben, --with-pdo-mysql seçeneği ile benim PHP çekirdekler bunu insatlled ve apache yeniden başlatılır ve tüm çalışıyordu

Bu MYSQL_ATTR_INIT_COMMAND mevcut değildir Windows üzerinde PHP 5.3.0 hatadan kaynaklanmaktadır. PHP hata raporu:

http://bugs.php.net/bug.php?id=47224

Bu yaşıyorsanız, PHP 5.3.1 veya sonraki bir sürümünü kullanan bir sürüme WAMP ürününüzü güncelleyin.