Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL][PDO] Coś dziwnego się dzieje z query...
Forum PHP.pl > Forum > Przedszkole
pks
Witam wszystkich Forumowiczy smile.gif

Jakiś czas temu napisałem sobie klasę do obsługi PDO. Wszystko pięknie działało na XAMPPie, ale po reinstalacji Windowsa i zainstalowaniu nieco nowszej wersji XAMPPa nagle zaczęły się dziać jaja.
Wszystko działa dobrze (tzn. pozostale funkcje w tej klasie, np. insert, delete, itp) oprócz funkcji query, która wygląda następująco:

Kod
public function query($query) {
           $data = array();
           try {
               $result = $this->dbhandle->prepare($query);
               $result->execute();        
               $data = $result->fetchAll();
              
               print_r($query . '<br/>' . $data);  //miejsce nr 1
              
               $result->closeCursor();
               unset($result);
           } catch(PDOException $e) {
               echo "Błąd PDOException w funkcji query - ".$e->getMessage(). "<br/>";
               die();
           }
           return $this->strip_slashes($data);
       }


w miejscu nr jeden wstawiłem sobie print_r aby mi wyświetlało co i jak. Gdy załaduje to na dreamhost.com, to pokazuje mi, że $data jest Array, ale tylko to. Natomiast gdy odpalę to u siebie na kompie, to mam błąd Przerwane połączenie. Połączenie z serwerem zostało zresetowane podczas wczytywania strony. Połączenie sieciowe zostało przerwane podczas negocjacji. Spróbuj ponownie.

Moje spostrzeżenie jest takie, że coś tu zawsze było nie tak, po dopiero ostatnio sprawdziłem to na dreamhoscie, chyba że oni też robili reinstalke ;p

Dodam, że tej funkcji używam tylko do zapytania SELECT.

Pozdrawiam i błagam o ratunek!

Po dłuższej analizie sprawdziłem, że przy pobieraniu jednej kolumny z tabeli, np. SELECT name FROM users wszystko dziala dobrze. Ale, przy zapytaniu typu SELECT name,id FROM users lub np. SELECT * FROM users program się wysypuje sad.gif
ktoś się spotkał z czymś takim?
Mephistofeles
Jeśli nie korzystasz z podpinania użyj funkcji query, a nie prepare->execute.
Podobny błąd dostawałem przy testach mojego skryptu, tyle że on nawet nie łączył się w tym momencie z bazą, ale miał parę print_r'ów, próbowałeś bez print_r? To chyba nie jest poprawne użycie tej funkcji? Nie powinno się łączyć stringa z tablicą.
pks
niby w manualu piszą, że jak dużo zapytań to prepare-execute jest szybsze smile.gif ale zmieniłem na zwykłe query to też nic nie dało sad.gif
print_r tez usunąlem i bez zmian.

Jak tylko jedną kolumnę wybieram to ok, a jak więcej jak jedną to nawet mi strony nie wyswietla tylko pokazuje 'nie mozna wyswietlic strony' po próbie przekierowania na localhost.com smile.gif dodam, ze nie mam zadnego przekierowania w kodzie, wiec to tym bardziej ciekawe - zupełnie jakby nie mogło znaleźć strony po zmianie jednej linijki kodu, toz to bez sensu

pustka w głowie, kombinuje już tydzień i nic...

Myslalem, ze moze klasę popsulem, albo cos, ale nawet jak robię plik taki jak ponizej to nie dziala... sad.gif

Kod
<?php

$dbhandle;

$dbhandle = new PDO("mysql:host=localhost;dbname=phpmyadmin", 'root', '');
$dbhandle->setAttribute(PDO::ATTR_PERSISTENT, true);
$dbhandle->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
      
        
$query = "SELECT * FROM `pma_history`";

$result = $dbhandle->prepare($query);          
$result->execute();
$data = $result->fetchAll();        
print_r($data);
$result->closeCursor();
unset($result);


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