-1

プリペアドステートメントを使用してMySQLデータベースにクエリを実行したい。クエリは次のようになります。

SELECT name, idname FROM names WHERE origin='english' AND name like('%a%')"

これはうまく機能します:

$origin = "english";
$stmt = $mysqli->prepare("SELECT name, idname FROM names WHERE origin=? AND name like('%a%')"))
$stmt->bind_param("s", $origin);

しかし、これはまったく機能しません(エラーがなくても):

$origin = "english";
$letter = "a";
$stmt = $mysqli->prepare("SELECT name, idname FROM names WHERE origin=? AND name like(%?%)")) 
$stmt->bind_param("ss", $origin, $letter);

最後の用語を気にしてくださいlike。2番目のパラメータをバインドする方法がわかりませんletter

4

1 に答える 1

1

ステートメントLIKEを使用して述語に値を渡します。CONCAT

修正されたバージョン:

$origin = "english";
$letter = "a";
$stmt = $mysqli->prepare("SELECT name, idname FROM names WHERE origin=? 
AND name LIKE CONCAT('%',?,'%')")) 
$stmt->bind_param("ss", $origin, $letter);
于 2012-05-06T14:49:23.030 に答える