【问题标题】:MySQL connect on PHPMySQL 连接 PHP
【发布时间】:2012-11-10 12:41:21
【问题描述】:

在 MySQL 上连接 PHP 应用程序的最佳方式是什么。

到目前为止,我有以下连接类。

class Connection{
    private static $server = "127.0.0.1";
    private static $catalog = "schemadb";
    private static $username = "rootuser";
    private static $password = "password";
    public static $current = null;

    public static function Open(){
        self::$current = mysqli_init();
        if(!self::$current){
            die("Failed to initialize connection");
        }
        if(!self::$current->real_connect(self::$server,self::$username,self::$password,self::$catalog)){
            die("Cannot connect to server");
        }
        return self::$current;
    }
    public static function Close(){
        self::$current->close();
    }
}

我也有

abstract class abstractDAO
{
    protected function getConnection()
    {
        $mysqli = new mysqli("127.0.0.1","rootuser","password","schemadb");
        return $mysqli;
    }

}

或者如果有任何其他最佳方法可以在 MySQL 上连接 PHP 应用程序。请指教谢谢..

【问题讨论】:

  • 从另一个数字中减去一个数字的最佳方法是什么?
  • @zerkms:没必要居高临下。他不确定他的对象模型是否可靠,并向我们征求意见。我认为这是一个完全有效的问题。
  • PDO 在技术上会更好,因为它不会将您绑定到单个数据库的界面
  • 如果您对设计感到好奇 - 请重写问题,使其听起来与设计有关。第一个提示:这里的连接设置不需要静态属性。
  • 我无法确认使用 pdo 会使应用程序更易于重用。我不知道有任何性能良好的应用程序,您可以在不更改代码的情况下切换数据库接口。所以使用 new mysqli() 似乎很完美。

标签: php mysql mysqli connect


【解决方案1】:

您可以尝试使用 PDO 对象:

<?php
try {
    $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);

} catch (PDOException $e) {
    print "Error!: " . $e->getMessage() . "<br/>";
    die();
}
?>

看看PHP PDO documentation page

【讨论】:

    【解决方案2】:

    试试这个

    <?php
    
      $user = $_POST["username"];//if this doesnt work try the next line
      $user = (isset($_POST["username"]) ? $_POST["username"] : "");
    
      $host = "localhost";//mysql password
      $username = "";//mysql username
      $password = "";//mysql password
      $db_name = "database";//database name
      $tbl_name ="test";//table name
      //make the connection
      $con = mysql_connect("$host","username","password")or die("Could not connect.");
      $conn = mysql_select_db("$db_name")or die("Could not select database.");
    
      $sql = "SELECT * FROM $tbl_name WHERE username='$username'";
      //query mysql
      $result = mysql_query($sql);
    
      if($result){
      //if it works show this
    
      }else{
    
      //if it doesnt work show this
    
      }
    
    ?>
    

    我尝试了很多次来建立与数据库的连接,我终于找到了。

    【讨论】:

      【解决方案3】:

      尝试使用 php 框架,例如 codeigniter、Yii、cake php。如果你在这个框架中实现任何一个,不需要编写 php mysql 查询它会自动生成。 您只需要输入您的数据库配置,如下所示

      $db['default']['hostname'] = 'localhost';
      $db['default']['username'] = 'root';
      $db['default']['password'] = '';
      $db['default']['database'] = 'sample';
      

      【讨论】:

        【解决方案4】:

        你可以使用PDO通过数据连接,这里是一个例子

        <?php
        $servername = "localhost";
        $username = "root";
        $password = "nopass";
        
        try {
            $conn = new PDO("mysql:host=$servername;dbname=wireframe", $username, $password);
            // set the PDO error mode to exception
            $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            echo "Connected successfully"; 
        
            $stmt = $conn->prepare("SELECT * FROM todolist"); 
            $stmt->execute();
        
            }
        catch(PDOException $e)
            {
            echo "Connection failed: " . $e->getMessage();
            }
        ?>
        
        
        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
        <html>
        <body>
        
        <table border="1" align="center">
        <tr>
          <th>name</th>
          <th>type</th>
          <th>status</th>
        </tr>
        
        
        
        
        <?php
        
        foreach($stmt->fetchAll() as $k=>$v){
             echo
           "<tr>
            <td>{$v['name']}</td>
            <td>{$v['type']}</td>
            <td>{$v['status']}</td>
           </tr>\n";
        
        }
        
        
        ?>
        </table>
        </body>
        </html>
        

        【讨论】:

          猜你喜欢
          • 2020-12-11
          • 1970-01-01
          • 2023-03-20
          • 1970-01-01
          • 2012-10-07
          • 2013-09-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多