10

PHP の準備済みステートメントを LIKE と組み合わせる方法を知っている人はいますか? すなわち

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

4

6 に答える 6

29

% 記号は、クエリではなく、パラメーターに割り当てる変数に入れる必要があります。

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();
于 2009-03-19T05:55:29.470 に答える
9

それぞれの SQL データベースの連結演算子を使用できます。

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

私は他のデータベースに精通していませんが、おそらく同等の関数/演算子を持っています。

于 2009-03-19T06:06:57.490 に答える
1

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);

これは私のために働く..

于 2014-01-30T22:11:57.000 に答える