我在尝试使用mysqli_connect方面遇到一些问题,就像我使用mysql_connect一样
这将是我的代码示例:
QUERY.PHP
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;
}
CLASS STATEMENT
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;
}
}
CLASS CONEX
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执行我的查询,我已经测试了从连接类返回对象,但这意味着更多的代码我发现冗余......有更优雅的方法吗?
答案 0 :(得分:3)
mysql_connect
创建您依赖的全局连接。这已经不够优雅了。如果您将连接视为对象实例,那么您将拥有更多控制权(特别是如果您需要同时维护多个连接) - 这是mysqli
迫使您做的事情。
这也不是多余的......很明显。
答案 1 :(得分:2)
如何像这样构建你的类:
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;
}
}
所以你可以在这段代码中使用它:
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 :(得分:-2)
Mysqli_connect是较新版本的mysql库。
我在mysqli中代表改进。
Mysqli几乎没有引入任何东西。
他们是,
1.准备好的陈述。 2.面向对象的接口。 3.支持多个语句。 4.嵌入式服务器支持。