Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Problem ze stałą
Forum PHP.pl > Forum > Przedszkole
woocash
To działa:
  1. $dbh = new PDO('mysql:host=localhost;dbname=test', 'test', 'test', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));



To wyrzuca wyjątek "could not find driver":
  1. define('DSN',"'mysql:host=localhost;dbname=test', 'test', 'test', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')");
  2.  
  3. $dbh = new PDO(DSN);


Co robię źle?
strife
Konstruktor klasy PDO, przyjmuje kilka argumentów, Ty konstruując taki kod podajesz na dobrą sprawę tylko jeden, czyli to tak jakbym stworzył instancję w taki sposób:

  1. $obj = new PDO("'mysql:host=localhost;dbname=test', 'test', 'test', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\'')");


Mam nadzieję, że rozumiesz w czym problem smile.gif

Generalnie tego typu konstrukcję, którą chcesz zastosować się nie stosuje, już lepiej to rozbić na kilka elementów define, np define("PDO_USERNAME") itp.

Pozdrawiam.
woocash
I wszystko jasne, dzięki!

Kontynuacja wątku smile.gif

Chciałbym zdefiniować sobie kodowanie jako opcję sterownika, ale niestety w php nie można definiować tablic jako stałych. Jest jakiś dobry i elegancki sposób na zdefiniowanie opcji połączenia w jednym miejscu i używanie go wszędzie tam gdzie to potrzebne?

  1. define('PDO_DSN','mysql:host=localhost;dbname=baza');
  2. define('PDO_USERNAME','test');
  3. define('PDO_PASSWORD','test');
  4. define('PDO_DRIVER_OPTIONS', array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''));

Takie coś oczywiście nie zadziała - pytanie czym to zastąpić?
yevaud
zdefiniuj w takim razie jako zmienna
woocash
To oczywiste, ale jako że te dane s niezmienne w skrypcie, chciałem zrobić to elegancko, a nie najłatwiej jak się da smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.