Комбинируйте подготовленные PHP записи с LIKE

Кто-нибудь знает, как комбинировать подготовленные команды PHP с LIKE? т.е.

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

Знак% должен идти в переменной, которую вы назначаете параметру, а не в запросе.

Я не знаю, используете ли вы mysqli или PDO, но с PDO это будет что-то вроде:

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

EDIT :: Для пользователя mysqli следующее.

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

Вы можете использовать оператор конкатенации вашей базы данных sql:

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

Я не знаком с другими базами данных, но у них, вероятно, есть эквивалентная функция / оператор.

Вы можете попробовать что-то вроде этого:

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

в PHP с использованием MYSQLI вам необходимо определить новый параметр, который будет объявлен как:

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

это работает для меня ..

Для меня отлично работает, я искал ответные часы, thx.

  $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 '<br>'; } } $stateObj->close(); $connection->close(); в  $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 '<br>'; } } $stateObj->close(); $connection->close();