Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.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 MYSQLI能否独立于执行来准备语句?_Php_Mysqli - Fatal编程技术网

Php MYSQLI能否独立于执行来准备语句?

Php MYSQLI能否独立于执行来准备语句?,php,mysqli,Php,Mysqli,我正在运行一个网站,使大量使用搜索功能。我正在探索加快和顺利搜索的方法 我的问题是,我是否可以声明一个Mysqli查询并独立于实际执行查询和绑定结果和参数来建立连接/准备 这样,我可以只声明一次查询和连接,从而节省一些处理时间。然后分别处理查询的参数和结果 下面的代码从表中选择x&y。这两个变量将始终是被选择的变量,并且连接将始终相同。下面代码中唯一变化的元素是绑定到?上的参数 循环遍历数组并对每个元素运行查询 foreach($array as $key) { $stmt->bi

我正在运行一个网站,使大量使用搜索功能。我正在探索加快和顺利搜索的方法

我的问题是,我是否可以声明一个Mysqli查询并独立于实际执行查询和绑定结果和参数来建立连接/准备

这样,我可以只声明一次查询和连接,从而节省一些处理时间。然后分别处理查询的参数和结果

下面的代码从表中选择x&y。这两个变量将始终是被选择的变量,并且连接将始终相同。下面代码中唯一变化的元素是绑定到?上的参数

循环遍历数组并对每个元素运行查询

foreach($array as $key) {
    $stmt->bind_param('s',$key);
    $stmt->execute();       
    $stmt->bind_result($x, $y);
    while ($stmt->fetch()) {
        //LALALALALAL
    }
    $stmt->free_result();
}
这种方法有什么固有的问题吗? 这样做值得费心吗?它有益吗


提前感谢。

当然可以,这是事先准备好的声明的最大好处之一。。。一个prepare,db服务器将缓存准备好的查询,因此每次只需要使用新的bind值执行它,就像Mark所说的,当然可以。唯一的问题是,你的搜索不会得到任何显著的加速。当数据库搜索时,它们是I/O绑定的。优化所做的是节省CPU时间。然而,CPU很少成为搜索的问题——硬盘是导致问题的原因之一。基本上,您所考虑的提前准备优化是好的。它将优化实际搜索到什么程度,这只是个疑问。
foreach($array as $key) {
    $stmt->bind_param('s',$key);
    $stmt->execute();       
    $stmt->bind_result($x, $y);
    while ($stmt->fetch()) {
        //LALALALALAL
    }
    $stmt->free_result();
}