Problem polega na tym, że mysql_query()
zwraca wartość logiczną zamiast zasobu wynikowego. Może się tak zdarzyć z dwóch powodów:
- Wykonałeś zapytanie, które zwraca sukces/niepowodzenie zamiast zestawu wyników (np.
UPDATE
) - Twoje zapytanie nie powiodło się
W twoim przypadku zapytanie nie powiodło się. Powodem, dla którego się nie powiodło, jest to, że udało Ci się uciec przed tylnymi tikami w ciągu PHP, gdzie nie było takiej potrzeby.
Twoje linie wyglądają tak:
$siteTitle = mysql_result(mysql_query("SELECT \`siteTitle\` FROM siteSettings"), 0);
Kiedy powinny po prostu być takie:
$siteTitle = mysql_result(mysql_query("SELECT `siteTitle` FROM siteSettings"), 0);
Teraz kilka uwag pobocznych:
- Nie pisz nowego kodu, który używa
mysql_*
Funkcje. Są przestarzałe i ostatecznie zostaną usunięte z PHP. Użyj MySQLi lub PDO zamiast tego (osobiście polecam PDO, YMMV) - Zagnieżdżanie funkcji bazy danych w ten sposób nie jest szczególnie dobrym sposobem pisania kodu. O wiele lepiej jest sprawdzać błędy bezpośrednio po każdym wywołaniu funkcji.
Na przykład:
$result = mysql_query("SELECT somecol FROM sometable");
if (!$result) {
// Handle error here
}
// Now process the result
- W zapytaniach należy cytować wszystkie identyfikatory lub żaden (najlepiej wszystkie). Cytowanie tylko niektórych utrudnia czytanie.
Np.
SELECT `siteTitle` FROM `siteSettings`