Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] eval() i skrypt z bazy danych
Forum PHP.pl > Forum > Przedszkole
ramzeso
Witam,

Mam taki problem. W bazie danych przechowuje pewien kod php który odczytuje z bazy danych i wykonuje funkcją eval. Wcześniej działało, teraz przestało nie wiem czemu. Niestety napotkałem taki o to error

  1. Catchable fatal error: Object of class mysqli_result could not be converted to string in /srv/home/vhh64891/public_html/bartlex.com/cms/functions_db.php(125) : eval()'d code on line 1


A tu linijka 125 odpowiedzialnia na funkcje eval

  1. $wynik = $lacz->query('select content from eporada');
  2. if (!$wynik)
  3. {
  4. throw new Exception('Blad bazy.');
  5. }
  6. if ($wynik->num_rows>0)
  7. {
  8. $content=$wynik->fetch_assoc();
  9. eval($content['content']);
  10. }


Przyznam że gdy wartością $content['content'] jest taki o to skrypt

  1. echo "Usługa eporada nie jest aktywna";


Działa,

Natomiast z większym skryptem takim jak ten

  1. if(mail($sendto, "E-porada www.bartex.com => ".$email, $message, $header))
  2. {
  3. echo "Zapytanie zostało wysłane poprawnie, dziękujemy.";
  4. }
  5. else
  6. {
  7. echo "<p><b>Nie</b> wysłano maila!</p>";
  8. }


Nie wiem czy dobrze kombinuje ale nawet jak na sztywno nie z bazy danych wrzuci się do $cos ten skrypt i wykona eval($cos) jest taki sam error, może cudzysłowia? nie wiem.

Wywala właśnie taki error.

Próbowałm debugować, wyrzucić to na ekran bez eval() wygląda to poprawnie, nie wiem co może być przyczyną.
Trochę wcześniej w necie szukałem, ale głownie były to problemy że ktos nie uzywał fetch, u mnie to jest.
nospor
1) Problem nie ma żadnego związku z bazą danych. Przenoszę.
2) Dostajesz komunikat błędu. Przetłumaczyłeś go chociaż? Przecież masz czarno na białym napisane, że próbujesz obiekt zamienić na tekst. Sprawdzałeś co w ogóle masz w tej zmiennej??
var_dump($content['content']);
ramzeso
Przecież napisałem że wyrzucałem na ekran i wszystko wygląda poprawnie jak tekst. Po za tym var_dump wyrzuca że jest to string(256). I z całym szacunkiem to bardzo dobrze zrozumiałem komunikat o błędzie.
nospor
W takim razie jedna z tych zmiennych
$sendto, $email, $message, $header
jest obiektem. Sprawdź też je - dość logiczne, jeśli naprawdę zrozumiałeś komunikat błędu wink.gif
ramzeso
Teraz wszystko jest jasne, przedeklarowalem jedna zmienna i użyłem jej do odczytania innej wartości z BD, var_dump pomógł.
Dzięki za 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-2025 Invision Power Services, Inc.