sql >> Databasteknik >  >> RDS >> Mysql

Använd bunden parameter flera gånger

Jag har kört över samma problem ett par gånger nu och jag tror att jag har hittat en ganska enkel och bra lösning. Om jag vill använda parametrar flera gånger lagrar jag dem bara i en MySQL User-Defined Variable .
Detta gör koden mycket mer läsbar och du behöver inga ytterligare funktioner i 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
}

Den enda nackdelen kan vara att du behöver göra en extra MySQL-fråga - men visst är det helt värt det.
Eftersom User-Defined Variables är sessionsbundna i MySQL finns det heller ingen anledning att oroa sig för variabeln @term orsakar biverkningar i fleranvändarmiljöer.



  1. Finns det en SQL Server Profiler för SQL Server Express?

  2. Hur man skapar och använder MySQL Views

  3. Deklarera en variabel och ställa in dess värde från en SELECT-fråga i Oracle

  4. Hur installerar man Postgis till en Keg-installation av [email protected] med Homebrew?