sql >> データベース >  >> RDS >> Mysql

警告:mysql_result()は、パラメーター1がリソースであり、ブール値が指定されていることを想定しています。

    問題は、mysql_query() 結果リソースの代わりにブール値を返しています。これが発生する理由は2つあります。

    1. 結果セットの代わりに成功/失敗を返すクエリを実行しました(例:UPDATE
    2. クエリが失敗しました

    あなたの場合、クエリは失敗しました。失敗した理由は、必要のないPHP文字列のバックティックをエスケープしたためです。

    あなたの行は次のようになります:

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

    単純にこれである必要がある場合:

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

    さて、いくつかのサイドノート:

    • mysql_*を使用する新しいコードを記述しないでください 関数。これらは非推奨であり、最終的にはPHPから削除されます。 MySQLi を使用します または PDO 代わりに(私は個人的にPDO、YMMVをお勧めします)
    • このようにデータベース関数をネストすることは、コードを記述するための特に良い方法ではありません。すべての関数呼び出しの後にエラーを明示的にチェックすることをお勧めします。

    例:

    $result = mysql_query("SELECT somecol FROM sometable");
    if (!$result) {
      // Handle error here
    }
    // Now process the result
    
    • クエリでは、すべての識別子を引用するか、引用しないか(できればすべて)にする必要があります。一部だけを引用すると読みにくくなります。

    例えば。

    SELECT `siteTitle` FROM `siteSettings`
    



    1. INオペレーターはOracleでLIKEワイルドカード(%)を使用できますか?

    2. mysqldb.escape_stringと同等のpsycopg2?

    3. MariaDBでのTIME_TO_SEC()のしくみ

    4. テーブルに存在しないINリストの要素に対しても結果を返します