所以我有一个
PHP文件,其中包含多个执行不同查询的函数,例如:
function getUserEmail($name)
{
$link=getLink();
$name=mysqli_real_escape_string($link, $name);
$output=mysqli_fetch_array(mysqli_query($link, "SELECT email FROM users WHERE name='$name';"));
mysqli_close($link);
return $output[0];
}
function getUserName($id)
{
$link=getLink();
$id=mysqli_real_escape_string($link, $id);
$output=mysqli_fetch_array(mysqli_query($link, "SELECT name FROM users WHERE id='$id';"));
mysqli_close($link);
return $output[0];
}
function getLink()
{
$link = mysqli_connect('localhost', 'myUser', 'myPass');
mysqli_select_db($link, 'myDB');
if (!$link) die(mysqli_error($link));
return $link;
}
(这段代码可能不起作用,这只是一个例子)
我已经完成了类似于上面的示例,但我认为由于在页面重新加载时调用了许多函数,因此多个DB链接创建和闭包不是最有效的方法(并且因为多个而开始滞后)添加到我的项目中的功能).
Ny的想法是:在PHP的标题上创建$DB链接并将其保存到$_POST var(如$_POST [‘link’]),然后通过代码使用它,并在页脚上关闭它.
这可以防止多个链接创建和关闭,我认为会提高性能.
有什么想法吗?
最佳答案 使用全局
$link=false;
function getLink()
{
global $link;
if (!$link) {
$link = mysqli_connect('localhost', 'myUser', 'myPass');
mysqli_select_db($link, 'myDB');
if (!$link) die(mysqli_error($link));
}
return $link;
}
这样,第一次调用getLink()建立连接,所有后续调用只是重新使用第一次调用建立的连接.进行此更改后,您可以保持其余代码相同.能够使用OOP我认为使用mysqli而不是mysql实际上是一个很大的好处,但是如果你不想使用OOP,那么应该为你做.