Mysql
 sql >> Database >  >> RDS >> Mysql

Utilizzare il parametro associato più volte

Ho riscontrato lo stesso problema un paio di volte e penso di aver trovato una soluzione abbastanza semplice e buona. Nel caso in cui desideri utilizzare i parametri più volte, li memorizzo semplicemente in una User-Defined Variable MySQL .
Questo rende il codice molto più leggibile e non hai bisogno di alcuna funzione aggiuntiva in 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
}

L'unico aspetto negativo potrebbe essere che è necessario eseguire una query MySQL aggiuntiva, ma imho ne vale assolutamente la pena.
Dato che User-Defined Variables sono legati alla sessione in MySQL, inoltre non è necessario preoccuparsi della variabile @term causando effetti collaterali in ambienti multiutente.