Php mysqli_stmt_bind_param错误-参数数量不匹配
我用php编写了这段代码Php mysqli_stmt_bind_param错误-参数数量不匹配,php,Php,我用php编写了这段代码 $stmt = mysqli_prepare($link, " select e.emp_id, e.first_name, e.last_name, e.hire_date, d.dept_name from employee e, department d where e.dept_id = d.dept_id and (e.first_name like '%(?)%' or e.last_name like '%(?)%')"); mys
$stmt = mysqli_prepare($link, "
select e.emp_id, e.first_name, e.last_name, e.hire_date, d.dept_name
from employee e, department d
where e.dept_id = d.dept_id and (e.first_name like '%(?)%' or e.last_name like '%(?)%')");
mysqli_stmt_bind_param($stmt, "ss", $key, $key);
mysqli_stmt_execute($stmt);
mysqli_stmt_affected_rows($stmt);
mysqli_stmt_close($stmt);
我有两个?,我要两个变量。为什么它不明白?我是一个十足的php高手,所以如果你觉得这很可笑,请耐心等待。提前谢谢 实际上您有0个
?
s和2个参数。?
仅在字符串之外工作mysqli_prepare
将'%(?)%'
解释为字符串,而不是占位符
您需要将%
添加到要绑定的变量中。。。像这样:
$stmt = mysqli_prepare($link, "
select e.emp_id, e.first_name, e.last_name, e.hire_date, d.dept_name
from employee e, department d
where e.dept_id = d.dept_id and (e.first_name like ? or e.last_name like ?)");
$likeKey = "%{$key}%";
mysqli_stmt_bind_param($stmt, "ss", $likeKey, $likeKey);
mysqli_stmt_execute($stmt);
mysqli_stmt_affected_rows($stmt);
mysqli_stmt_close($stmt);
您只需在查询中输入?
。不在引号里。对你来说就这样了
另外,您不需要像字符串一样在
中使用()
(除非它实际上是您要查找的值的一部分)。在类似的中,括号按字面解释,没有特殊含义。实际上您有0个?
s和2个参数。?
仅在字符串之外工作mysqli_prepare
将'%(?)%'
解释为字符串,而不是占位符
您需要将%
添加到要绑定的变量中。。。像这样:
$stmt = mysqli_prepare($link, "
select e.emp_id, e.first_name, e.last_name, e.hire_date, d.dept_name
from employee e, department d
where e.dept_id = d.dept_id and (e.first_name like ? or e.last_name like ?)");
$likeKey = "%{$key}%";
mysqli_stmt_bind_param($stmt, "ss", $likeKey, $likeKey);
mysqli_stmt_execute($stmt);
mysqli_stmt_affected_rows($stmt);
mysqli_stmt_close($stmt);
您只需在查询中输入?
。不在引号里。对你来说就这样了
另外,您不需要像
字符串一样在中使用()
(除非它实际上是您要查找的值的一部分)。在类似的中,括号按字面意思解释,没有特殊含义。您实际上在搜索什么?钥匙,或者是带括号的钥匙,或者…?你到底想搜索什么?键,或是带括号的键,或者…?mysqli\u stmt\u受影响的行不打印结果?@BillyGrande:不,不应该打印。这仅适用于插入
和更新
(以及可能的删除
)。您没有“影响”任何行,只选择了它们。检查手册(),要获取返回的行数,请使用mysqli\u stmt\u num\u rows()
。如果您想要结果,则需要使用mysqli\u stmt\u fetch()
。mysqli\u stmt\u受影响的行不会打印结果?@BillyGrande:不,不应该打印。这仅适用于插入
和更新
(以及可能的删除
)。您没有“影响”任何行,只选择了它们。检查手册(),要获取返回的行数,请使用mysqli\u stmt\u num\u rows()
。如果需要结果,则需要使用mysqli\u stmt\u fetch()
。