Php 为什么准备好的语句会导致bind中的参数数量错误?
我得到了Php 为什么准备好的语句会导致bind中的参数数量错误?,php,mysql,mysqli,Php,Mysql,Mysqli,我得到了 mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters 警告 根据以下声明: mysqli_stmt_bind_param($stmt,$ss',$str_addr_no,$str_addr) 我已经到处找了哪里。。。类似于示例,看不出我的语法有什么问题 $link = mysqli_connect("localhost","fred","password","h2o_amr"
mysqli_stmt_bind_param(): Number of variables doesn't match number of parameters
警告
根据以下声明:
mysqli_stmt_bind_param($stmt,$ss',$str_addr_no,$str_addr)代码>
我已经到处找了哪里。。。类似于
示例,看不出我的语法有什么问题
$link = mysqli_connect("localhost","fred","password","h2o_amr");
$str_addr_no = $_REQUEST['meter_street_number'];
$str_addr = $_REQUEST['meter_street_address'];
$stmt = mysqli_stmt_init($link);
mysqli_stmt_prepare($stmt, "select w.* from water w where w.mtr_addr_no like '?%' and w.mtr_addr_str like '?%' "))
mysqli_stmt_bind_param($stmt, "ss", $str_addr_no, $str_addr);
有没有办法让PHP显示或检查准备好的语句,以查看实际准备了多少参数?您引用了占位符:“?%”
,它将它们转换为字符串,而不是占位符。占位符必须是空的?
字符:
SELECT ... WHERE foo = ? // OK
SELECT ... WHERE Foo = '?' // no parameters here, just a string
对于类似于
查询的通配符,您必须求助于黑客:
SELECT ... WHERE foo LIKE CONCAT('%', ?)
您引用了占位符:“?%”
,这会将它们转换为字符串,而不是占位符。占位符必须是空的?
字符:
SELECT ... WHERE foo = ? // OK
SELECT ... WHERE Foo = '?' // no parameters here, just a string
对于类似于
查询的通配符,您必须求助于黑客:
SELECT ... WHERE foo LIKE CONCAT('%', ?)
您可以在PHP代码中连接%
,而不是使用这种方法。您可以在PHP代码中连接%
。