Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Błąd przy łączeniu PDO
Forum PHP.pl > Forum > Przedszkole
sexigrzes
Witam

Próbuje się łączyć przez PDO i dostaje taki błąd:

  1. Połączenie nie mogło zostać utworzone: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while other unbuffered queries are active. Consider using PDOStatement::fetchAll(). Alternatively, if your code is only ever going to run against mysql, you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.


Czy mógłby mi ktoś wyjaśnić o co chodzi?

wyciek z infophp:

PHP Version 5.1.6-0.dotdeb.2

PDO
------------------------------------------------------------------------------
PDO support enabled
------------------------------------------------------------------------------
PDO drivers sqlite2, mysql, pgsql



pdo_mysql
------------------------------------------------------------------------------
PDO Driver for MySQL, client library version 4.1.15
------------------------------------------------------------------------------
nospor
zgodnie z komunikatem bledu nie możesz odpalac jednych zapytan dopoki nie pobrales danych z innych zapytan.
Zgodnie z dalszym komunikatem mozesz to zalatwic poprzez ustawienie PDO::MYSQL_ATTR_USE_BUFFERED_QUERY
smile.gif
sexigrzes
kurde, ale czym to jest spowodowane? Bo mam jakiś koszmarny serwer...
Normalnie mi wszystko bangla ładnie na moim serwerze, wgrywam do kolegi i ten błąd... ;/
Stare PHP? Czy jak?
nospor
Miałem to samo. Lokalnie dzialalo, na home.pl juz nie smile.gif
Ustawienie atrybutu o którym mowa we wczesniejszych postach pomaga.
sexigrzes
Dodaje ten atrybut:

Kod
$pdo -> setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, PDO::ERRMODE_EXCEPTION);


zwraca mi:

Cytat
Fatal error: Call to a member function fetch() on a non-object in /home/site/5495/www/main.php on line 4


3 i 4 linijka:

Kod
    $zapytanie =  $pdo -> query('SELECT * FROM main WHERE id = 1');
    $row = $zapytanie -> fetch();


Coś tam powinienem teraz dać?
nospor
http://pl2.php.net/manual/pl/pdo.setattribute.php
ja wiem ze ciezko ale czasem warto zajrzec.

$pdo -> setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);

Co do nowego bledu: $pdo -> query zwraca ci blad nie zas obiekt. zawsze trzeba patrzec co jest na zwrocie a nie przyjmowac ze cos jest winksmiley.jpg

ps: ewentualnie zwraca tablice a ty myslisz ze object. Wyswietl sobie var_dumpem co zawiera $zapytanie i bedziesz wiedzial

ps2: pod tamtym linkiem masz tez info odnosnnie pierwszego bledu
Cytat
If you do not fetch all of the data in a result set before issuing your next call to PDO::query(), your call may fail. Call PDOStatement::closeCursor() to release the database resources associated with the PDOStatement object before issuing your next call to PDO::query().
czyli albo ustawiasz atrybut, albo wywolujesz co tu napisali
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.