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可以处理持久数据库连接。即使你和我合作