首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PHP、update、delete连接到MySQL数据库的

问使用PHP、update、delete连接到MySQL数据库的
EN

Stack Overflow用户
提问于 2014-04-18 17:51:36
回答 1查看 3K关注 0票数 0

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

category.php

代码语言:javascript
复制
<?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....

login.php

代码语言:javascript
复制
//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.....

提前感谢

格曼

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-19 17:53:38

免责声明:,这只是一个介绍,__。我不建议经常使用这个。

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

代码语言:javascript
复制
// connect to mysql db
$con = mysqli_connect("localhost", "root", "");

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

..。每次你想要建立联系。

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

看看这里的解释。

现在:

代码语言:javascript
复制
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;
    }
}

然后,您将获得并运行如下数据库连接:

代码语言:javascript
复制
// Get DB connection
$connection = Database::getInstance();
$result = mysqli_query($connection, "select * from categories");

这是怎么回事?

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

不过,我想让你知道,现在讨论的是单例模式是否被批准。我认为只要你在学习,你就不应该太在意它,。我建议你自己玩这些技巧:测试,尝试,看看会发生什么,如果你觉得它是对的或不对的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23159416

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档