Php 我该怎么做;“数据库连接”;代码运行效率更高?

Php 我该怎么做;“数据库连接”;代码运行效率更高?,php,Php,我有以下代码: function Perubahan($a = '`Ubah`') { $con = mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database $syntax = 'SELECT' . $a . ' FROM `table 1` WHERE `No`= 6'; $naik = mysqli_query($con, $syntax);

我有以下代码:

 function Perubahan($a = '`Ubah`') {
        $con = mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database

        $syntax = 'SELECT' . $a . ' FROM `table 1` WHERE `No`= 6';
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo round($row[0], 3);
        }
    }

    function Jenis($b = 1) {
        $con = mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }

    function Andil($b = 1) {
        $con = mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database

        $syntax = 'SELECT `Andil` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo round($row[0], 3);
        }
    }

    function Kelompok($b = 1) {
        $con = mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database

        $syntax = 'SELECT `Andil` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo round($row[0], 3);
        }
    }
所以我调用每个函数(仍然在同一个PHP文件中)。但是当我开始运行它时,显示结果花费了太长的时间(但它起了作用)。我猜问题是因为我在每个函数中重复了数据库连接。 如何避免连接到同一个数据库

我试图创建到不同文件的数据库连接,并在每个函数中调用该文件,但没有成功。我还试图传递$con(在每个函数中执行
global$con
),但它也没有使它运行得更快

我是不是遗漏了什么?

您可以使用一个类:

class NameService
{
    private $con = null;

    public function __construct()
    {
        $this->con = new mysqli("localhost", "root", "", "nofriani");
        if ($this->con->connect_error) {
            die('Connect Error (' . $this->con->connect_errno . ') '
             . $this->con->connect_error);
        }
    }

    public function __destruct()
    {
        $this->con->close();
    }

    function Andil($b = 1) {
        $syntax = 'SELECT `Andil` FROM `table 1` WHERE `No`= ' . $b;
        $result= $this->con->query($syntax);
        while ($row = $result->fetch_array()) {
            echo round($row[0], 3);
        }
    }

    ...
}
并使用它:

$nameService = new NameService();
$nameService->Andil(23);
编辑:现在它是OOP风格的

您可以使用一个类:

class NameService
{
    private $con = null;

    public function __construct()
    {
        $this->con = new mysqli("localhost", "root", "", "nofriani");
        if ($this->con->connect_error) {
            die('Connect Error (' . $this->con->connect_errno . ') '
             . $this->con->connect_error);
        }
    }

    public function __destruct()
    {
        $this->con->close();
    }

    function Andil($b = 1) {
        $syntax = 'SELECT `Andil` FROM `table 1` WHERE `No`= ' . $b;
        $result= $this->con->query($syntax);
        while ($row = $result->fetch_array()) {
            echo round($row[0], 3);
        }
    }

    ...
}
并使用它:

$nameService = new NameService();
$nameService->Andil(23);
编辑:现在它是OOP风格的

您可以使用一个类:

class NameService
{
    private $con = null;

    public function __construct()
    {
        $this->con = new mysqli("localhost", "root", "", "nofriani");
        if ($this->con->connect_error) {
            die('Connect Error (' . $this->con->connect_errno . ') '
             . $this->con->connect_error);
        }
    }

    public function __destruct()
    {
        $this->con->close();
    }

    function Andil($b = 1) {
        $syntax = 'SELECT `Andil` FROM `table 1` WHERE `No`= ' . $b;
        $result= $this->con->query($syntax);
        while ($row = $result->fetch_array()) {
            echo round($row[0], 3);
        }
    }

    ...
}
并使用它:

$nameService = new NameService();
$nameService->Andil(23);
编辑:现在它是OOP风格的

您可以使用一个类:

class NameService
{
    private $con = null;

    public function __construct()
    {
        $this->con = new mysqli("localhost", "root", "", "nofriani");
        if ($this->con->connect_error) {
            die('Connect Error (' . $this->con->connect_errno . ') '
             . $this->con->connect_error);
        }
    }

    public function __destruct()
    {
        $this->con->close();
    }

    function Andil($b = 1) {
        $syntax = 'SELECT `Andil` FROM `table 1` WHERE `No`= ' . $b;
        $result= $this->con->query($syntax);
        while ($row = $result->fetch_array()) {
            echo round($row[0], 3);
        }
    }

    ...
}
并使用它:

$nameService = new NameService();
$nameService->Andil(23);

编辑:现在它是OOP风格的

如果您可以使用类,那么您可以为类创建全局变量,该类保持到数据库的连接,那么每个函数将使用相同的连接,并且不会重新连接

使用准备好的语句,因为现在你的代码很容易被破解


函数
Jenis
Andil
Kelompok
与为核心重用而准备的
Perubahan
完全相同,所以只需将其重命名为
getData($select='*')
,并且只使用一个函数。

如果您可以使用类,那么您就可以为类创建全局变量,该类保持与数据库的连接,然后,每个函数将使用相同的连接,并且不会重新连接

使用准备好的语句,因为现在你的代码很容易被破解


函数
Jenis
Andil
Kelompok
与为核心重用而准备的
Perubahan
完全相同,所以只需将其重命名为
getData($select='*')
,并且只使用一个函数。

如果您可以使用类,那么您就可以为类创建全局变量,该类保持与数据库的连接,然后,每个函数将使用相同的连接,并且不会重新连接

使用准备好的语句,因为现在你的代码很容易被破解


函数
Jenis
Andil
Kelompok
与为核心重用而准备的
Perubahan
完全相同,所以只需将其重命名为
getData($select='*')
,并且只使用一个函数。

如果您可以使用类,那么您就可以为类创建全局变量,该类保持与数据库的连接,然后,每个函数将使用相同的连接,并且不会重新连接

使用准备好的语句,因为现在你的代码很容易被破解


函数
Jenis
Andil
Kelompok
与为核心重用而准备的
Perubahan
完全相同,因此只需将其重命名为
getData($select='*')
,并且只使用一个函数。

作为一项干燥规则,您最好提取这部分代码:

mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
并放在一个地方(一个类或一个函数),所有其他代码都可以访问它。 例如,您可以使用如下函数:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }
然后你可以这样做:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }

这样,如果您的
连接字符串
被更改,您应该更改一个位置,所有其他函数都会像以前一样工作。(顺便说一句,最好不要硬编码
连接字符串

作为一项规则,您最好提取这部分代码:

mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
并放在一个地方(一个类或一个函数),所有其他代码都可以访问它。 例如,您可以使用如下函数:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }
然后你可以这样做:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }

这样,如果您的
连接字符串
被更改,您应该更改一个位置,所有其他函数都会像以前一样工作。(顺便说一句,最好不要硬编码
连接字符串

作为一项规则,您最好提取这部分代码:

mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
并放在一个地方(一个类或一个函数),所有其他代码都可以访问它。 例如,您可以使用如下函数:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }
然后你可以这样做:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }

这样,如果您的
连接字符串
被更改,您应该更改一个位置,所有其他函数都会像以前一样工作。(顺便说一句,最好不要硬编码
连接字符串

作为一项规则,您最好提取这部分代码:

mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
并放在一个地方(一个类或一个函数),所有其他代码都可以访问它。 例如,您可以使用如下函数:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }
然后你可以这样做:

function getConnection()
{
return mysqli_connect("localhost", "root", "", "nofriani"); //koneksi ke database
}
function Jenis($b = 1) {
        $con = getConnection();

        $syntax = 'SELECT `Jenis` FROM `table 1` WHERE `No`= ' . $b;
        $naik = mysqli_query($con, $syntax);
        while ($row = mysqli_fetch_array($naik)) {
            echo $row[0];
        }
    }

这样,如果您的
连接字符串
被更改,您应该更改一个位置,所有其他功能都像以前一样工作。(顺便说一句,最好不要硬编码
连接字符串

我会问您一个反问题,部分帮助您回答这个问题,您自己:如果
数据库名称
密码
用户名
发生更改怎么办?。你是否对你所有的功能都进行了检查和更新?这是许多问题中的一个为什么你不能只为所有这些做一个函数?在每个函数上重复相同的代码(或几乎相同的代码)。Apache可以处理持久数据库连接。即使你连接多次,也不意味着会有重新连接。如果脚本运行得不快,您可能需要在
No
@Rasclatt:这正是我想做的,但它们的运行速度似乎并不比前面的代码快。我会问您一个反问题来帮助您部分地回答这个问题,您自己:如果
数据库名称
密码
用户名
发生更改怎么办?。你是否对你所有的功能都进行了检查和更新?这是许多问题中的一个为什么你不能只为所有这些做一个函数?在每个函数上重复相同的代码(或几乎相同的代码)。Apache可以处理持久数据库连接。即使你和我合作