Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Jak sprawdzic polaczneie do bazy przy Zend_Db_Adapter_Pdo_Mysql
Forum PHP.pl > Forum > Przedszkole
Octobus
Witam,

pisze modul do Magento 2 i musze polaczyc sie z zewnetrzna baza, napisalem wiec:
Kod
$db = new \Zend_Db_Adapter_Pdo_Mysql(array(
    'host'     => 'localhost',
    'username' => 'xxxxx',
    'password' => 'yyyyy',
    'dbname'   => 'xxxxx'
));


laczy, wszystko dziala tylko nie moge znalezc informacji jak sprawdzac czy rzeczywiscie polaczyl sie z baza danych zebym w razie czego otrzymywal powiadomienie jezeli wystapily jakies bledy. Probowalem $db->isConnected() zawsze zwraca false nawet jak sa zle dane do bazy.
nospor
Mowisz ze laczysz sie z zewnetrzna baza a jako host dajesz localhost.... srednio ona zewnetrzna...

Cytat
. Probowalem $db->isConnected() zawsze zwraca false nawet jak sa zle dane do bazy.
No jak sa zle to wlasnie ma zwracac FALSE wiec jest wszystko ok

No i na przyszlosc uzyj google...
https://stackoverflow.com/questions/8138326...=google_rich_qa
Octobus
Dane do bazy dla przykladu sa podane, tam jest warunek sprawdzajacy czy serwer jest lokalny czy nie.

Niestety sprawdzalem ten kod juz wczesniej (szukalem sporo) i mi nie dziala tak jak powinien, wkleilem go tak:

Kod
try {
    $db = \Zend_Db::factory('Pdo_Mysql', array(
        'host'     => 'cokolwiek',
        'username' => 'xxx',
        'password' => 'yyy',
        'dbname'   => 'xxx'
    ));
    $db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
    // perhaps a failed login credential, or perhaps the RDBMS is not running
    return 'e1';
} catch (Zend_Exception $e) {
    // perhaps factory() failed to load the specified Adapter class
    return 'e2';
}

return 'xxxx';


przy prawidlowych dostepach zwraca xxxx, jezeli nie sa prawidlowe (zle haslo), nie renderuje w ogole modulu i nie zwraca mi zadnego bledu. Niestety to modul w srodku magento i nie wiem jak znalezc przyczyne :/
nospor
Skoro dajesz \ przed \Zend_Db to i dla wyjatkow moze by bylo warto, nie sadzisz?
Octobus
W sumie logicznie to dobry pomysl, dodalem, teraz tak wyglada czesc kodu:
Kod
} catch (\Zend_Db_Adapter_Exception $e) {
            // perhaps a failed login credential, or perhaps the RDBMS is not running
            return 'e1';
        } catch (\Zend_Exception $e) {
            // perhaps factory() failed to load the specified Adapter class
            return 'e2';
        }
return 'test';

zmienilem haslo na bledne ale modul sie nie renderuje :/ nie ma zadnej wartosci ktora zwraca.

W index.php
Kod
error_reporting(E_STRICT | E_ALL);
ini_set('display_errors',1);


ale niczego nie wyswietla
nospor
Dodaj jeszcze jeden catch

  1. catch (\Exception $e) {
  2. die('Widzisz mnie?');
  3. }
Octobus
Ok, dzisiaj na swiezo spojrzalem na to i zaczelo dzialac, okazalo sie ze zmienilem kod i w innym miejscu mialem blad. Kod 2 posty wyzej dziala, ten z \Zend_Db_Adapter_Exception i \Zend_Exception. Dzięki @nospor za cierpliwosc i pomoc
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-2024 Invision Power Services, Inc.