如何在准备好的 SQL 语句中绑定参数


How to bind parameters in prepared SQL statements?

我想使用预准备语句查询我的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);