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.'%'));
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, '%')
私は他のデータベースに精通していませんが、おそらく同等の関数/演算子を持っています。
MYSQLI を使用する PHP では、次のように宣言される新しいパラメーターを定義する必要があります。
$stmt = mysqli_prepare($con,"SELECT * FROM table WHERE name LIKE ?");
$newParameter='%'.$query.'%';
mysqli_stmt_bind_param($stmt, "s", $newParameter);
mysqli_stmt_execute($stmt);
これは私のために働く..