我想使用预准备语句查询我的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
。我不知道如何将第二个参数绑定letter
.
使用 CONCAT
语句将值传递给LIKE
谓词。
更正版本:
$origin = "english";
$letter = "a";
$stmt = $mysqli->prepare("SELECT name, idname FROM names WHERE origin=?
AND name LIKE CONCAT('%',?,'%')"))
$stmt->bind_param("ss", $origin, $letter);