PHP/MySQLI多重搜索


PHP/MySQLI multiple search

我一直在尝试启动并运行php/mysqli简单搜索,但似乎无法使其正常工作。我一直在遵循我在前面的问题(链接)中找到的一些指示,但它仍然不起作用。

$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()的参数计数错误…"

如有建议或帮助,不胜感激。

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

语法:

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

何处

参数:参数标识符。对于使用named的已准备语句占位符,这将是一个参数名称的形式:name。对于使用问号占位符准备的语句,这将是1-参数的索引位置。

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

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

length:数据类型的长度。指示参数是OUT参数,则必须显式设置长

你也可以这样做:

$values = array_unshift($values, $types);
call_user_func_array (array ($search_stmt, 'bind_param'), $values);         
$search_stmte->execute();