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

Forzar coincidencia de cadena exacta para declaraciones preparadas de PDO

Asegúrese de poner comillas alrededor de la variable especificada en AGAINST .

En PHP:

$some_term = '"'.$some_term.'"'; // Adds quotes around string

$stmt = $db->prepare('SELECT * FROM example WHERE MATCH(some_column) AGAINST(:some_term)');
$stmt->bindParam(':some_term', $some_term, PDO::PARAM_STR);
$stmt->execute();

O también podría hacerlo en la declaración de MySQL:

$stmt = $db->prepare('SELECT * FROM example WHERE MATCH(some_column) AGAINST(CONCAT(\'"\',:some_term,\'"\')');
$stmt->bindParam(':some_term', $some_term, PDO::PARAM_STR);
$stmt->execute();

Según la documentación de MySQL sobre búsquedas booleanas de texto completo :