首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql_connect对mysqli_connect

mysql_connect对mysqli_connect
EN

Stack Overflow用户
提问于 2012-08-29 22:28:58
回答 3查看 8.9K关注 0票数 3

我在使用mysqli_connect时遇到了一些问题,就像我使用mysql_connect一样

这将是我的代码的一个例子:

QUERY.PHP

代码语言:javascript
复制
class classQuery{
  public function __construct(){
    require('conex/classConex.php');
    require('conex/statement/classStatement.php');
    $this->ObjConex = new classConex;
    $this->ObjStatement = new classStatement;
  }
  public function Query($email){
    $this->ObjConex->Conex();
    $query='SELECT user_email from table where email='.mysql_real_escape_string($email).'';
    $consulta = $this->ObjStatement->Select($query);
    return $consulta;
  }

类语句

代码语言:javascript
复制
class classStatement{
  public function __construct(){
    $this->ObjConex = new classConex;
  }
    public function Select($query){
      $query_execute = mysql_query($query);
      while($row = mysql_fetch_row($query_execute)){
         $consulta=htmlentities($row[0]);
      }
      return $consulta; 
    }
}

类CONEX

代码语言:javascript
复制
class classConex{
  public function Conex(){
    require ('conex.php');
    mysql_connect ($server,$dbuser,$dbpasswd) or die('Error de Conexión');
    mysql_select_db($dbname);
  }
}

好的,现在我想使用mysqli_connect而不是mysql_connect,根据php手册,我的新连接类应该如下所示:

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

既然我的连接是一个对象,我将无法以相同的方式从ClassStatement执行我的查询,我已经测试了从connect类返回这个对象,但这意味着更多的代码,我在那里找到了一种更优雅的方法来完成这个任务?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-29 22:43:48

这样安排你的班级怎么样:

代码语言:javascript
复制
class Database {

  public function __construct ( $server, $dbuser, $dbpasswd, $dbname ) {
    $this->dbhandle = new mysqli($server, $dbuser, $dbpasswd, $dbname);
  }

  public function Select ($query) {
    $result = $this->dbhandle->query($query);

    while ( $row = $result->fetch_row() ){
      // Whatever you're doing here...
      //$consulta = htmlentities($row[0]);
    }

    return $consulta; 
  }

}

因此,您可以在下面的代码中使用它:

代码语言:javascript
复制
class Query{
  public function __construct(){
    require('conex/classDatabase.php');

    $this->Database = new Database($host, $user, $pass, $dbname);
  }

  public function Query ($email) {
    $query = "SELECT user_email from table where email='".mysql_real_escape_string($email)."'";
    $consulta = $this->Database->Select($query);
    return $consulta;
  }
}

我在示例中包含了面向对象的语法。因为不管怎么说,您都在使用对象,所以您可能会与它相处得很好。

票数 2
EN

Stack Overflow用户

发布于 2012-08-29 22:42:19

mysql_connect创建您所依赖的全局连接。这已经不雅了。如果将连接视为对象实例--这是mysqli强制您做的事情,那么您将有更多的控制(特别是需要同时维护多个连接)。

也不是多余的..。只是很清楚。

票数 3
EN

Stack Overflow用户

发布于 2017-06-25 05:38:17

Mysqli_connect是mysql库的更新版本。

在这里,我在mysqli代表改进。

Mysqli介绍的东西很少。

他们是,

1.准备发言。2.面向对象的接口。3.支持多次发言。4.嵌入式服务器支持。

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

https://stackoverflow.com/questions/12187385

复制
相关文章

相似问题

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