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

バインドされたパラメータを複数回使用する

    私は今、同じ問題に何度か遭遇しましたが、非常に単純で良い解決策を見つけたと思います。パラメータを複数回使用したい場合は、MySQLのUser-Defined Variableに保存するだけです。 。
    これにより、コードがはるかに読みやすくなり、PHPで追加の関数を使用する必要がなくなります。

    $sql = "SET @term = :term";
    
    try
    {
        $stmt = $dbh->prepare($sql);
        $stmt->bindValue(":term", "%$term%", PDO::PARAM_STR);
        $stmt->execute();
    }
    catch(PDOException $e)
    {
        // error handling
    }
    
    
    $sql = "SELECT ... FROM table WHERE name LIKE @term OR number LIKE @term";
    
    try
    {
        $stmt = $dbh->prepare($sql);
        $stmt->execute();
        $stmt->fetchAll();
    }
    catch(PDOException $e)
    {
        //error handling
    }
    

    唯一の欠点は、追加のMySQLクエリを実行する必要があることですが、それだけの価値はあります。
    User-Defined Variable MySQLではセッションにバインドされているため、変数@termについて心配する必要もありません。 マルチユーザー環境で副作用を引き起こします。



    1. 一意の値の数を数える

    2. offset+limitを使用してmySQLクエリの結果の総数を検索します

    3. SQL Serverの一時テーブルとテーブル変数の違いは何ですか?

    4. SqlDataSourceEnumerator.Instance.GetDataSources()は、ローカルSQLServer2008インスタンスを検索しません