Mysql
 sql >> Database >  >> RDS >> Mysql

Avvertimento:mysql_result() si aspetta che il parametro 1 sia una risorsa, dato booleano

Il problema è che mysql_query() restituisce un valore booleano anziché una risorsa risultato. Ci sono due ragioni per cui questo può accadere:

  1. Hai eseguito una query che restituisce successo/non riuscito invece di un set di risultati (ad es. UPDATE )
  2. La tua richiesta non è riuscita

Nel tuo caso la query non è riuscita. Il motivo per cui non è riuscito è perché sei sfuggito ai segni di spunta all'indietro nella stringa PHP in cui non era necessario.

Le tue righe sono così:

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

Quando dovrebbero essere semplicemente questo:

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

Ora, alcune note a margine:

  • Non scrivere nuovo codice che utilizza mysql_* funzioni. Sono deprecati e alla fine verranno rimossi da PHP. Usa MySQLi o DOP invece (personalmente consiglio DOP, YMMV)
  • Annidare le funzioni del database in questo modo non è un modo particolarmente valido per scrivere il codice. È molto meglio controllare gli errori in modo esplicito dopo ogni chiamata di funzione.

Ad esempio:

$result = mysql_query("SELECT somecol FROM sometable");
if (!$result) {
  // Handle error here
}
// Now process the result
  • Dovresti citare tutti gli identificatori, o nessuno, nelle tue query (preferibilmente tutti). Citare solo alcuni rende più difficile la lettura.

Per esempio.

SELECT `siteTitle` FROM `siteSettings`