sql >> Database >  >> RDS >> Mysql

Gebruik gebonden parameter meerdere keren

Ik heb hetzelfde probleem nu een paar keer tegengekomen en ik denk dat ik een vrij eenvoudige en goede oplossing heb gevonden. Als ik parameters meerdere keren wil gebruiken, sla ik ze gewoon op in een MySQL User-Defined Variable .
Dit maakt de code veel leesbaarder en je hebt geen extra functies in PHP nodig:

$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
}

Het enige nadeel kan zijn dat je een extra MySQL-query moet doen, maar het is absoluut de moeite waard.
Sinds User-Defined Variables sessiegebonden zijn in MySQL hoeft u zich ook geen zorgen te maken over de variabele @term bijwerkingen veroorzaken in omgevingen met meerdere gebruikers.



  1. SQLiteReadOnlyDatabaseException:poging om een ​​alleen-lezen database te schrijven (code 1032)

  2. PostgreSQL-fout bij het maken van een extensie

  3. PDO::fetchAll vs. PDO::fetch in a loop

  4. SQL-ontwikkelaar 4