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

PHP/MySQLを使用した検索フィルタリング

    他のすべての投稿と同様に、すべての条件にANDを追加する必要があります。これはこれまでで最もクリーンな答えです。古いmysqlの代わりにmysqliOOPの方法を使用しますが、文字列を実際にエスケープすることを忘れないでください。単なる提案です。

    典型的なクエリの例を次に示します。

    正しい方法:

    SELECT * FROM donar WHERE name='dxenaretionx' AND sex='M';
    

    あなたのやり方

    SELECT * FROM donar WHERE name='dxenaretionx' sex='M';
    

    コード:

    function search_donar($_POST) {
        $by_name = $_POST['by_name'];
        $by_sex = $_POST['by_sex'];
        $by_group = $_POST['by_group'];
        $by_level = $_POST['by_level'];
    
        //Do real escaping here
    
        $query = "SELECT * FROM donar";
        $conditions = array();
    
        if(! empty($by_name)) {
          $conditions[] = "name='$by_name'";
        }
        if(! empty($by_sex)) {
          $conditions[] = "sex='$by_sex'";
        }
        if(! empty($by_group)) {
          $conditions[] = "blood_group='$by_group'";
        }
        if(! empty($by_level)) {
          $conditions[] = "e_level='$by_level'";
        }
    
        $sql = $query;
        if (count($conditions) > 0) {
          $sql .= " WHERE " . implode(' AND ', $conditions);
        }
    
        $result = mysql_query($sql);
    
        return $result;
    }
    


    1. MySQLエラー1064構文ですが、すべて問題ないようです

    2. ストアドプロシージャのパラメータリストで式(関数呼び出しなど)の結果を使用しますか?

    3. MySQLリストすべての手順

    4. プリペアドステートメントを使用してselectMySQLを挿入します