Combina las declaraciones preparadas de PHP con LIKE

¿Alguien sabe cómo combinar declaraciones preparadas PHP con LIKE? es decir

"SELECT * FROM table WHERE name LIKE %?%";

Los signos% deben ir en la variable que asigna al parámetro, en lugar de en la consulta.

No sé si estás usando mysqli o PDO, pero con PDO sería algo así como:

 $st = $db->prepare("SELECT * FROM table WHERE name LIKE ?"); $st->execute(array('%'.$test_string.'%')); 

EDIT :: Para el usuario de mysqli lo siguiente.

 $test_string = '%' . $test_string . '%'; $st->bind_param('s', $test_string); $st->execute(); 

Puede usar el operador de concatenación de su base de datos sql respectiva:

 # oracle SELECT * FROM table WHERE name LIKE '%' || :param || '%' # mysql SELECT * from table WHERE name LIKE CONCAT('%', :param, '%') 

No estoy familiarizado con otras bases de datos, pero probablemente tengan una función / operador equivalente.

Podrías probar algo como esto:

 "SELECT * FROM table WHERE name LIKE CONCAT(CONCAT('%',?),'%')" 

en PHP usando MYSQLI necesita definir un nuevo parámetro que será declarado como:

 $stmt = mysqli_prepare($con,"SELECT * FROM table WHERE name LIKE ?"); $newParameter='%'.$query.'%'; mysqli_stmt_bind_param($stmt, "s", $newParameter); mysqli_stmt_execute($stmt); 

esto funciona para mí …

Para mí, estoy muy bien, he buscado horas de respuesta, gracias.

  $dbPassword = "pass"; $dbUserName = "dbusr"; $dbServer = "localhost"; $dbName = "mydb"; $connection = new mysqli($dbServer, $dbUserName, $dbPassword, $dbName); if($connection->connect_errno) { exit("Database Connection Failed. Reason: ".$connection->connect_error); } $tempFirstName = "reuel"; $sql = "SELECT first_name, last_name, pen_name FROM authors WHERE first_name LIKE CONCAT(CONCAT('%',?),'%')"; //echo $sql; $stateObj = $connection->prepare($sql); $stateObj->bind_param("s",$tempFirstName); $stateObj->execute(); $stateObj->bind_result($first,$last,$pen); $stateObj->store_result(); if($stateObj->num_rows > 0) { while($stateObj->fetch()){ echo "$first, $last \"$pen\""; echo '
'; } } $stateObj->close(); $connection->close();