Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Problem ze stałą
woocash
post
Post #1





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 5.04.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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?

Ten post edytował woocash 27.05.2010, 11:10:22


--------------------
"Dwie rzeczy są nieskończone: wszechświat i głupota ludzka. Co do tego pierwszego są jeszcze wątpliwości" - Albert Einstein
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
strife
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 605
Pomógł: 96
Dołączył: 22.10.2004
Skąd: UK

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
woocash
post
Post #3





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 5.04.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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ć?

Ten post edytował woocash 24.06.2010, 20:16:26


--------------------
"Dwie rzeczy są nieskończone: wszechświat i głupota ludzka. Co do tego pierwszego są jeszcze wątpliwości" - Albert Einstein
Go to the top of the page
+Quote Post
yevaud
post
Post #4





Grupa: Zarejestrowani
Postów: 471
Pomógł: 89
Dołączył: 29.07.2008
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


zdefiniuj w takim razie jako zmienna
Go to the top of the page
+Quote Post
woocash
post
Post #5





Grupa: Zarejestrowani
Postów: 60
Pomógł: 0
Dołączył: 5.04.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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


--------------------
"Dwie rzeczy są nieskończone: wszechświat i głupota ludzka. Co do tego pierwszego są jeszcze wątpliwości" - Albert Einstein
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 06:34