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

PHP:好き/嫌いカウンター

    表示されているのはtableです MySQL予約語 の1つです しかし、あなたはそれを列名として使用しようとしています。あなたの列は実際にはtable_nameと呼ばれています しかし、あなたの質問に基づいています。

    プレースホルダーを使用したクエリは次のようになります:

    INSERT INTO votes (ip, table_name, imgid) 
      VALUES (?, ?, ?)
      ON DUPLICATE KEY UPDATE
        ip=VALUES(ip),
        table_name= VALUES(table_name),
        imgid=VALUES(imgid)
    

    mysqliで覚えておいてください これを行うことで、このクエリを実行できます:

    $sth = $mysqli->prepare("...");
    $sth->bind_param("sss", $_SERVER['REMOTE_ADDR'], $table, $imgid);
    $sth->execute();
    

    ドキュメントではこのプロセスについて詳しく説明していますが、"sss" モノは3つの文字列を参照し、3つの値はパラメーターとして渡されます。

    おそらく PDO mysqliよりも使用するのがはるかに面倒ではないため 。さらに良いのは、Doctrine のようなデータベースフレームワークを使用することです。 あなたのためにSQLの汚い仕事の多くをするために。さらに良いのは、CodeIgnighter のようなフレームワークを使用することです。 、 CakePHP または FuelPHP 基盤を築くために。ゼロから手作業でアプリケーションを構築することは、非常に時間がかかり、エラーが発生しやすくなります。

    注意すべきもう1つの点は、コードで一貫した命名を試して使用する必要があるということです。 $tableを参照します table_nameの値として 、したがって、おそらく$table_nameである必要があります はじめに。



    1. ORA-04091:表xx_xxが変更されています。トリガー/関数がそれを認識しない可能性があります

    2. PHP開発者はMySQLのストアドプロシージャを使用する必要がありますか?

    3. GROUP BYを使用できるのに、なぜDISTINCTを使用しないのですか?

    4. PostgreSQLとActiveRecordが競合状態を副選択