gpt4 book ai didi

php - 使用 mysqli 绑定(bind)未知数量的参数

转载 作者:行者123 更新时间:2023-12-04 05:31:45 24 4
gpt4 key购买 nike

我正在尝试在表格中进行搜索,如下所示:http://www.phpjabbers.com/free-scripts/mysql-search-table/search.php

我发现我可以根据搜索表单 $_GET 连接一个字符串,这样我就可以在获取参数后查询它:

$query = "SELECT * FROM table WHERE status = 1"
if($_GET['param1']{
$query = $query." AND param1 = ?";
}
$stmt = $mysqli->prepare($query);

如果我不必添加,那将是完美的:
$stmt->bind_param('i',$_GET['art']);

我按照这篇文章的说明进行操作: https://stackoverflow.com/a/11152781/679333 ,但通配符部分不起作用。当我将变量插入数组时,我引用了这些变量,而不是那个 for 循环:
array_push($user_terms, &$_GET['var']);

它有效,但现在我收到“已弃用:调用时传递引用已被弃用”警告。

我不想忽略警告,因为我读过 Call-time pass-by-reference 现在已被 PHP 杀死。

最佳答案

有点草率,但完成了工作。

function refValues($arr){
if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
{
$refs = array();
foreach($arr as $key => $value)
$refs[$key] = &$arr[$key];
return $refs;
}
return $arr;
}

$params = array();

$query = "SELECT * FROM table WHERE status = 1";

// Iterate over your paramters from $_GET
foreach ($_GET as $k => $v)
{
if(!empty($v)
{
$query .= " AND $k = ?";
$params[$k] = helper::sanitize($v);
}
}
// After you get through all your params...

$stmt = $mysqli->prepare($query);

// Bind em.
call_user_func_array(array($stmt, 'bind_param'), refValues($params));

应该这样做,尽管我以前从未绑定(bind)过 mysqli。让我知道它是如何工作的。

关于php - 使用 mysqli 绑定(bind)未知数量的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12486032/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com