0

我一直在尝试启动并运行 php/mysqli 简单搜索,但我似乎无法让它工作。我一直在遵循我在较早的问题(Link)中找到的一些指示,但它仍然无法正常工作。

$sql = 'SELECT product_title FROM product ';
$where = array();
$values = array();
$types = '';

if (isset($_GET['searchText']) and $_GET['searchText'] != '') {
    $where[] = 'WHERE product_title = ?';
    $values['titel'] = $_GET['searchText'];
    $types .= 's';
}

if (isset($_GET['searchCategorySelect']) and $_GET['searchCategorySelect'] != '') {
    $where[] = 'WHERE product_categoryid = ?';
    $values['category'] = $_GET['searchCategorySelect'];
    $types .= 's';
}

$sql .= implode(' AND ',$where);
$values = array_unshift($values, $types);

$search_stmt = $mysqli->prepare($sql);
$search_stmt->bind_param($values);
$search_stmt->execute();

这会导致此错误消息:“mysqli_stmt::bind_param() in... 的参数计数错误”

一些建议或帮助将不胜感激。

4

1 回答 1

2

mysqli_stmt::bind_param 至少需要 2 个参数,但您传递的是一个

句法:

bool PDOStatement::bindParam ( mixed $parameter , mixed &$variable [, int $data_type = PDO::PARAM_STR [, int $length [, mixed $driver_options ]]] )

在哪里

参数:参数标识符。对于使用命名占位符的准备好的语句,这将是一个形式为 :name 的参数名称。对于使用问号占位符的预处理语句,这将是参数的 1 索引位置。

变量:要绑定到 SQL 语句参数的 PHP 变量的名称。

data_type:使用 PDO::PARAM_* 常量的参数的显式数据类型。要从存储过程返回 INOUT 参数,请使用按位 OR 运算符设置 data_type 参数的 PDO::PARAM_INPUT_OUTPUT 位。

长度:数据类型的长度。要指示参数是存储过程中的 OUT 参数,您必须显式设置长度。

你也可以这样做:

$values = array_unshift($values, $types);
call_user_func_array (array ($search_stmt, 'bind_param'), $values);         
$search_stmte->execute();
于 2012-09-04T20:08:44.540 回答