gpt4 book ai didi

php - 使用PHP连接MySQL数据库的连接类,插入、更新、删除

转载 作者:行者123 更新时间:2023-11-29 13:02:28 24 4
gpt4 key购买 nike

我即将开始一个新项目,使用 MySQL、javascript 等在 PHP 中构建一个网站...我的问题是我可以创建一个“使用 PHP 到 MySQL 数据库的连接类”一次,并每次调用该类吗?想要插入、更新或删除某些内容。我是 php 新手,所以简单点,您能给我发送示例代码或教程链接吗?目前,当我想要建立连接时,我将连接放在 php 的顶部,该连接可以工作,但许多页面上有很多重复的代码。

类别.php

<?php

// connect to mysql db
$con = mysqli_connect("localhost", "root", "");

// use a mysql database
mysqli_select_db($con, "gaa2013");

// run a sqql query
$result = mysqli_query($con, "select * from categories");

print("<form method='POST' action=\"home.php?page=category\">");

print("<select name = 'cat'>");
print("<option selected=\"selected\" style=\"background-color: blue\">All</Option>");
//print fields from each row
while($row = mysqli_fetch_array($result)){
$curr = $row['description'];
print("<option value='$curr'>$curr</option>");

}
print("</select>");
print("<input type=\"submit\" name=\"submit\" value=\"Select a Category\">");
print("<hr>");

more code....

登录.php

//If there are input validations, redirect back to the login form
if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: index.php");
exit();
}

// connect to mysql db
$con = mysqli_connect("localhost", "root", "");
// use a mysql database
mysqli_select_db($con, "gaa2013");
// run a sqql query
$result = mysqli_query($con,"select * from users WHERE username='$username'");
//$num_rows = mysql_num_rows($result);
//Check whether the query was successful or not
if($result) {
while($row = mysqli_fetch_array($result)){
//echo "$num_rows Rows\n";
$id = $row['id'];
$userp = $row['username'];
$pass = $row['password'];
$_SESSION['SESS_MEMBER_ID'] = $id;
$_SESSION['SESS_USERNAME'] = $userp;
$_SESSION['SESS_PASSWORD'] = $pass;
session_write_close();
header("location: home.php");
exit();
}
more code.....

提前致谢

格曼

最佳答案

免责声明:这只是介绍。我不建议经常使用它。

您的目标是避免这种情况:

// connect to mysql db
$con = mysqli_connect("localhost", "root", "");

// use a mysql database
mysqli_select_db($con, "gaa2013");

...每次您想要建立连接时。

要做到这一点,一种方法可以是设计模式:单例。

Check its explanation out here.

现在:

class Database {
private static $connection = null;

public static function getInstance()
{
static $connection = null;
if (null === $connection) {
$connection = new Database();
}
return $connection;
}

/**
* Protected constructor to prevent creating a new instance of the
* *Singleton* via the `new` operator from outside of this class.
*/
protected function __construct()
{
// connect to mysql db
$con = mysqli_connect("localhost", "root", "");

// use a mysql database
mysqli_select_db($con, "gaa2013");

return $con;
}
}

然后,您将像这样获取并运行数据库连接:

// Get DB connection
$connection = Database::getInstance();
$result = mysqli_query($connection, "select * from categories");

这是如何运作的?

  1. 您使用 Database::getInstance() 请求新的数据库连接;
  2. Database::getInstance 检查它是否为 null,因此尚未请求任何连接。如果是,则构建一个。否则,使用已经打开的连接。
  3. 数据库构造函数在数据库对象之外不可用,因此您不能请求 new Database();来自外部。

但是,我想让您知道,现在正在讨论单例模式是否合适。我认为你不必太关心它,只要你在学习即可。我建议您亲自尝试这些技术:测试、尝试,看看会发生什么,无论您觉得它是否正确。

关于php - 使用PHP连接MySQL数据库的连接类,插入、更新、删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23159416/

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