sql >> Base de Datos >  >> RDS >> Mysql

Usar parámetro enlazado varias veces

Me he encontrado con el mismo problema un par de veces y creo que he encontrado una solución bastante simple y buena. En caso de que quiera usar parámetros varias veces, solo los almaceno en una User-Defined Variable de MySQL .
Esto hace que el código sea mucho más legible y no necesita ninguna función adicional en 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
}

El único inconveniente podría ser que necesite realizar una consulta MySQL adicional, pero en mi opinión vale la pena.
Desde User-Defined Variables están vinculados a la sesión en MySQL, tampoco hay necesidad de preocuparse por la variable @term causando efectos secundarios en entornos multiusuario.