Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Warnung:mysql_result() erwartet, dass Parameter 1 eine Ressource ist, boolesch gegeben

Das Problem ist, dass mysql_query() gibt statt einer Ergebnisressource einen booleschen Wert zurück. Dafür gibt es zwei Gründe:

  1. Sie haben eine Abfrage durchgeführt, die statt einer Ergebnismenge Erfolg/Fehlschlag zurückgibt (z. B. UPDATE )
  2. Ihre Abfrage ist fehlgeschlagen

In Ihrem Fall ist die Abfrage fehlgeschlagen. Der Grund dafür ist, dass Sie die Backticks im PHP-String maskiert haben, wo Sie es nicht brauchten.

Ihre Zeilen sehen so aus:

$siteTitle = mysql_result(mysql_query("SELECT \`siteTitle\` FROM siteSettings"), 0);

Wenn sie einfach so sein sollten:

$siteTitle = mysql_result(mysql_query("SELECT `siteTitle` FROM siteSettings"), 0);

Nun einige Randnotizen:

  • Schreiben Sie keinen neuen Code, der mysql_* verwendet Funktionen. Sie sind veraltet und werden schließlich aus PHP entfernt. Verwenden Sie MySQLi oder PDO stattdessen (ich persönlich empfehle PDO, YMMV)
  • Das Verschachteln von Datenbankfunktionen auf diese Weise ist keine besonders gute Art, Ihren Code zu schreiben. Es ist viel besser, die Fehler explizit nach jedem Funktionsaufruf zu überprüfen.

Zum Beispiel:

$result = mysql_query("SELECT somecol FROM sometable");
if (!$result) {
  // Handle error here
}
// Now process the result
  • Sie sollten in Ihren Anfragen entweder alle Identifikatoren oder keine angeben (vorzugsweise alle). Nur einige zu zitieren erschwert das Lesen.

Z.B.

SELECT `siteTitle` FROM `siteSettings`