PHP绑定通配符
希望有人能帮助我在变量值旁边需要多字符通配符时如何在mysqli中绑定参数。我发现它在创建SQL语句时对我有效,如下所示:PHP绑定通配符,php,mysql,sql,mysqli,prepared-statement,Php,Mysql,Sql,Mysqli,Prepared Statement,希望有人能帮助我在变量值旁边需要多字符通配符时如何在mysqli中绑定参数。我发现它在创建SQL语句时对我有效,如下所示: $sql = "SELECT item_title FROM item WHERE item_title LIKE '%$title%'"; 但是,我尝试按照相同的模式绑定变量,结果发现它失败了。他们使用了以下代码: $sql = "SELECT item_title FROM item WHERE item_title LIKE '%?%'"; 它引发了以下错误: 警
$sql = "SELECT item_title FROM item WHERE item_title LIKE '%$title%'";
但是,我尝试按照相同的模式绑定变量,结果发现它失败了。他们使用了以下代码:
$sql = "SELECT item_title FROM item WHERE item_title LIKE '%?%'";
它引发了以下错误:
警告:mysqli_stmt_bind_param[function.mysqli stmt bind param]:
变量数与准备中的参数数不匹配
第行程序名称中的语句
有人能告诉我如何解决这个问题吗?
多谢各位 只能绑定数据文本,不能绑定任意查询部分。 所以,首先准备好你的文字
$var = "%$var%";
$sql = "SELECT item_title FROM item WHERE item_title LIKE ?";
您可以这样做:
$sql = "SELECT item_title FROM item WHERE item_title LIKE ? ";
然后
$title_new = '%'.$title.'%';
mysqli_stmt_bind_param($stmt, 's', $title_new);
根据用户的评论进行更新
要实现下面的SQL
s2.subject_name LIKE '%$keyword%' OR c.city_name LIKE '%$keyword%'
在MySqli语句下面使用
你的名字怎么样?或者c.城市的名字怎么样
$keyword = '%'.$keyword.'%';
mysqli_stmt_bind_param($stmt, 'ss', $keyword, $keyword);
每个绑定变量有一个问号。 例如 准备从项目名称类似的项目中选择项目名称?你喜欢什么名字?和 准备好的语句的好处是,您不需要担心引用变量 然后绑定所有参数,如
绑定参数…,$param1,$param2 你想试试吗?然后绑定_param%.$string.%或类似“%”| |?| |“%”。谢谢你的回复。我在查询中的where子句中使用了相同的变量两次,如下所示-where s2.subject_名称(如“%$keyword%”)或c.city_名称(如“%$keyword%”)。那么您能告诉我如何绑定这些变量吗。@TharangaNuwan我已经根据您的评论更新了答案,请参见下文。这不会留下安全漏洞。特别是,如果$var='hello%world',您有一个意外的占位符标记。
$sql="SELECT item_title FROM item WHERE item_title LIKE concat ('%',?,'%') ";