Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 为什么准备好的语句会导致bind中的参数数量错误?_Php_Mysql_Mysqli - Fatal编程技术网

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代码中连接
%