在PHP中从一个位置建立连接

用户名

在JSP中,如果要连接到数据库,我将使用以下代码创建一个名为DBManager的Java类:

public class DBManager {
    private final static String DB_URL = "jdbc:mysql://localhost:3306/mydb";
    private final static String DB_USERNAME = "root";
    private final static String DB_PASSWORD = "root";
    public static Connection conn = null;
    private static Statement stmt = null;

    /**
     * Tests connection with the database by getting connection using the
     * database url and username and password. And creates a dumb statement and
     * closes it to make sure everything is working fine.
     */
     static {
         try {
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager
                .getConnection(DB_URL, DB_USERNAME, DB_PASSWORD);
            stmt = conn.createStatement();
            stmt.close();
         } catch (Exception e) {
            e.printStackTrace();
         }
     }
}

现在,我可以轻松地执行以下操作:

PreparedStatement pstmt = DBManager.conn.prepareStatement("SELECT * FROM USER");

我自己学习PHP,而“大多数”在线教程实际上并没有教授如何以正确的方式做事。

他们都以传统方式在需要连接的每个页面中执行此操作:

$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

哪个错误,因为您说要更改密码?然后,您必须在使用该密码的每个页面中进行更改。

我的问题:我如何做与PHP中的Java类等效/相似的事情?

编辑:

<?php 
class DBManager {
   public static $conn = null;
   private static $hostname = "localhost";
   private static $username = "root";
   private static $password = "root";
   private static $dbname = "tutorme";

   protected function __construct() {
       try {
           DBManager::$conn = new PDO("mysql:host=localhost;dbname=tutorme", DBManager::$username, DBManager::$password);
           DBManager::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $e) {
            echo "Error: " . $e->getMessage();
        }
    }

    public static function getInstance() {
        if (null === DBManager::$conn) {
            DBManager::$conn = new DBManager();
        }
       return DBManager::$conn;
   }
}
?>

我搜索了一下,并想出了上面的代码。但是,现在当我打电话时

$stmt = DBManager::getInstance()->prepare("INSERT INTO SUBJECT (SubjectTitle, SubjectName) VALUES (:subject,:subj)");

我收到一个错误,DBManager没有函数prepare()

这表示我DBManager::getInstance要传回DBManager object而不是PDO conn object

423

您有一个明显的错误:

DBManager::$conn = new DBManager();

你不要那个!

只需致电new DBManager()$connvar就会被初始化!

还有一些小的变化,

<?php 
class DBManager {
    public static $conn = null;
    private static $hostname = "localhost";
    private static $username = "root";
    private static $password = "root";
    private static $dbname = "tutorme";

    private function __construct() {
        try { // why not using $hostname and $dbname?!
           DBManager::$conn = new PDO("mysql:host=" . DBManager::$hostname . ";dbname=" .DBManager::$dbname, DBManager::$username, DBManager::$password);
           DBManager::$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        } catch(PDOException $e) {
           echo "Error: " . $e->getMessage();
        }
    }

    // getConnection() is a better naming of the function
    public static function getConnection() {
        if (is_null(DBManager::$conn)) {
            new DBManager();
       }
       // now $conn is initialized
       return DBManager::$conn;
    }
 }
 ?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在一个位置连接php变量

来自分类Dev

CSS div从一个位置到另一个位置

来自分类Dev

要从一个位置计算半径

来自分类Dev

如何在不使PHP将值从一个位置复制到内存中的另一个位置的情况下串联PHP字符串?

来自分类Dev

将对象从一个位置统一移动到另一个位置

来自分类Dev

SQL Count + 3个连接+在一个查询中的多个位置-如何编写Proen IF?

来自分类Dev

如何为从一个位置到另一个位置的mapView注释设置动画?

来自分类Dev

快速拖动按钮从一个位置到另一个位置

来自分类Dev

将大量文件从一个位置复制到另一个位置

来自分类Dev

使用XSLT 2将元素从一个位置移动到另一个位置

来自分类Dev

如何为从一个位置到另一个位置的mapView注释设置动画?

来自分类Dev

将特定行从一个位置移到另一个位置

来自分类Dev

将 XAML 元素从一个位置移动到另一个位置

来自分类Dev

将整行从一个位置移动到另一个位置

来自分类Dev

如何从一个位置获取数组中多个位置的距离,并在iOS中按最近距离对该数组进行排序?

来自分类Dev

Android翻译动画从一个位置移动到另一视图的位置

来自分类Dev

使用Powershell使用变量将文件从一个位置复制到多个位置

来自分类Dev

如何从一个位置参数生成两个变量?

来自分类Dev

在哈希中的某个位置插入一个条目

来自分类Dev

在R中的一个位置处理许多点

来自分类Dev

在R中的一个位置处理许多点

来自分类Dev

正则表达式将同一记录中的字符串从一个位置替换为另一个位置

来自分类Dev

从python中的列表中删除一个位置到另一个位置元素

来自分类Dev

在OpenLayers 3中将功能从一个位置移动到另一位置

来自分类Dev

如何使用bash命令将一组目录从一个位置移动到另一个位置

来自分类Dev

如何从一个位置查找所有可能的可到达数字?

来自分类Dev

使用VBA从一个位置到到达空格为止的字符计数

来自分类Dev

如何从一个位置查找所有可能的可到达数字?

来自分类Dev

从一个位置开始,将长字符串包装成多行

Related 相关文章

  1. 1

    在一个位置连接php变量

  2. 2

    CSS div从一个位置到另一个位置

  3. 3

    要从一个位置计算半径

  4. 4

    如何在不使PHP将值从一个位置复制到内存中的另一个位置的情况下串联PHP字符串?

  5. 5

    将对象从一个位置统一移动到另一个位置

  6. 6

    SQL Count + 3个连接+在一个查询中的多个位置-如何编写Proen IF?

  7. 7

    如何为从一个位置到另一个位置的mapView注释设置动画?

  8. 8

    快速拖动按钮从一个位置到另一个位置

  9. 9

    将大量文件从一个位置复制到另一个位置

  10. 10

    使用XSLT 2将元素从一个位置移动到另一个位置

  11. 11

    如何为从一个位置到另一个位置的mapView注释设置动画?

  12. 12

    将特定行从一个位置移到另一个位置

  13. 13

    将 XAML 元素从一个位置移动到另一个位置

  14. 14

    将整行从一个位置移动到另一个位置

  15. 15

    如何从一个位置获取数组中多个位置的距离,并在iOS中按最近距离对该数组进行排序?

  16. 16

    Android翻译动画从一个位置移动到另一视图的位置

  17. 17

    使用Powershell使用变量将文件从一个位置复制到多个位置

  18. 18

    如何从一个位置参数生成两个变量?

  19. 19

    在哈希中的某个位置插入一个条目

  20. 20

    在R中的一个位置处理许多点

  21. 21

    在R中的一个位置处理许多点

  22. 22

    正则表达式将同一记录中的字符串从一个位置替换为另一个位置

  23. 23

    从python中的列表中删除一个位置到另一个位置元素

  24. 24

    在OpenLayers 3中将功能从一个位置移动到另一位置

  25. 25

    如何使用bash命令将一组目录从一个位置移动到另一个位置

  26. 26

    如何从一个位置查找所有可能的可到达数字?

  27. 27

    使用VBA从一个位置到到达空格为止的字符计数

  28. 28

    如何从一个位置查找所有可能的可到达数字?

  29. 29

    从一个位置开始,将长字符串包装成多行

热门标签

归档