Heim > Backend-Entwicklung > PHP-Tutorial > So verbinden Sie PHP mit mysql-mysqli und PDO

So verbinden Sie PHP mit mysql-mysqli und PDO

不言
Freigeben: 2023-03-23 12:40:02
Original
3355 Leute haben es durchsucht

Der Inhalt dieses Artikels besteht darin, Ihnen die Methode zum Verbinden von PHP mit MySQL-MySQL und PDO mitzuteilen. Freunde in Not können sich darauf beziehen

Die PDO-Erweiterung wurde erwähnt Das Buch lesen Um eine Verbindung zur Datenbank herzustellen, habe ich zuvor die MySQL-Erweiterung und die MySQLi-Erweiterung verwendet, aber im Grunde kein PDO. Daher habe ich einige Informationen überprüft und sie speziell aufgezeichnet und reproduziert,

MySQL-Erweiterungen für PHP (Vor- und Nachteile)

Entwerfen und entwickeln Sie frühe Erweiterungen, die PHP-Anwendungen die Interaktion mit MySQL-Datenbanken ermöglichen. Die MySQL-Erweiterung bietet eine prozedurorientierte Schnittstelle

und ist für MySQL 4.1.3 oder früher konzipiert. Obwohl diese Erweiterung mit MySQL 4.1.3 oder neueren Datenbankservern interagieren kann, unterstützt sie daher einige Funktionen nicht, die von späteren MySQL-Servern bereitgestellt werden.

Mysqli-Erweiterung für PHP

Mysqli-Erweiterung, die wir manchmal als erweiterte MySQL-Erweiterung bezeichnen, kann zur Nutzung der neuen erweiterten Funktionen in MySQL 4.1.3 oder neueren Versionen verwendet werden;

Die Mysqli-Erweiterung ist in PHP 5 und späteren Versionen enthalten.

Die Mysqli-Erweiterung bietet im Vergleich zur Mysql-Erweiterung eine Reihe von Vorteilen: objektorientierte Schnittstelle, Unterstützung für vorbereitete Anweisungen, Multi- Unterstützung bei der Ausführung von Anweisungen, Transaktionsunterstützung, Erweiterungs-Debugging-Funktionen und Unterstützung eingebetteter Dienste.

PHP Data Object (PDO)

PHP Data Object ist eine Spezifikation der Datenbankabstraktionsschicht in PHP-Anwendungen. PDO bietet eine einheitliche API-Schnittstelle, sodass Ihre PHP-Anwendung sich nicht um den spezifischen Datenbankserversystemtyp kümmert, der verbunden werden soll. Mit anderen Worten: Wenn Sie die API von PDO verwenden, können Sie bei Bedarf nahtlos zwischen Datenbankservern wechseln.

************************************************ **** ********************************************** ***** ***********************************

PHP-MySQL ist am originellsten Möglichkeit für PHP, die MySQL-Datenbankerweiterung zu betreiben, das i in PHP-MySQLi steht für Improvement,


bietet relativ erweiterte Funktionen und was die Erweiterung betrifft, erhöht es auch die Sicherheit.

Und PDO (PHP Data Object) bietet eine Abstraktionsschicht zum Betreiben der Datenbank


1.mysql und mysqli

mysqli ist eine neue Funktionsbibliothek, die von PHP5 bereitgestellt wird. (i) stellt eine Verbesserung dar und ihre Ausführungsgeschwindigkeit ist natürlich schneller ist auch sicherer

MySQL ist eine nicht dauerhafte Verbindungsfunktion und MySQL ist eine permanente Verbindungsfunktion. Das heißt

MySQL öffnet bei jeder Verbindung einen Verbindungsprozess, und wenn MySQL mehrmals ausgeführt wird, wird derselbe Verbindungsprozess verwendet, wodurch der Serveraufwand verringert wird. Einige Freunde verwenden beim Programmieren new mysqli('localhost ', Benutzername', 'Passwort', 'Datenbankname'); meldet immer

Fehler, Schwerwiegender Fehler: Klasse 'mysqli' nicht gefunden in d:…

mysqli-Klasse ist nicht in PHP enthalten Von?

ist standardmäßig nicht aktiviert. Sie müssen php.ini unter Win ändern und das „;“ vor php_mysqli.dll entfernen.

1: Mysqli.dll ist eine Datenbank, mit der Sie die Datenbank in einem Objekt oder Prozess betreiben können und deren Verwendung ebenfalls sehr einfach ist.


php stellt eine Verbindung zur MySQL-Datenbank her. Unsere klassischste Methode ist die Verwendung von mysql_connect(). , der spezifische Code lautet wie folgt:



[php]view plain kopieren


mysql_connect($db_host, $db_user, $db_pass) or die(mysql_error());  
mysql_select_db($db_name);
Nach dem Login kopieren



Browser-Eingabeaufforderung: Diese Erweiterung ist seit PHP 5.5.0 veraltet. und wird in Zukunft entfernt. Es sollte durch die Erweiterung MySQLi oder die Erweiterung PDO_MySQL ersetzt werden. Nach der Suche habe ich die Quelle des folgenden Artikels gefunden.

Hier ist das MySQL ein Die erweiterte API soll die PHP-Operationen in der MySQL-Datenbank vereinfachen.

mysqli

mysqli ist eine erweiterte Version von MySQL, die in PHP 5 und späteren Versionen erscheint. Es ist hauptsächlich in den folgenden Aspekten gegenüber MySQL verbessert:

1、面向对象接口;2、prepared语句支持(译注:关于prepare请参阅mysql相关文档);3、多语句执行支持;4、事务支持;5、增强的调试能力;6、嵌入式服务支持



[php] view plain copy


<?php   
$link = mysqli_connect("localhost","root","123456","test") or die("Error " . mysqli_error($link)); //连接,test为数据库的名称  
$query = "SELECT name FROM userInfo" or die("Error in the consult.." . mysqli_error($link));//查询  
$result = mysqli_query($link, $query);//查询的结果  
while($row = mysqli_fetch_array($result)) {   
    echo $row["name"] . "<br>";   
}  
?>
Nach dem Login kopieren


上面的这段代码是一个完整的从连接到查询再到关闭数据库的一个例子。从该例子中可以看到,mysql_connect()和mysqli_connect()函数的用法上的小区别。




[php] view plain copy


//mysql  
mysql_connect("localhost","root","123456");  
mysql_select_db("userInfo");  
  
//mysqli  
mysqli_connect("localhost","root","123456","test");
Nach dem Login kopieren

mysqli的连接数据库方法中除了使用上述(又称之为面向过程)之外,另外一种就是面向对象方式:



[php] view plain copy


  1. <?php  
    $mysqli = new mysqli("localhost","root","123456","test") //填写mysql用户名、密码及数据库的名称  
        or die("Could not connect to MySQL server!");  
    $mysqli->query("set names utf8"); //设置数据库内数据的编码,相当于同时设置客户端、服务器端和脚本编码方式。  
        $sql  = "select * from userInfo";  
    $result = $mysqli->query($sql);  
    if($result){  
        if($result->num_rows>0){  
            while($row =$result->fetch_array()){//循环输出结果集中的记录  
                echo ($row[0])." ";  
                echo ($row[1])." ";  
                echo ($row[2])." ";  
                echo "<br/>";  
            }  
        }  
    }else{  
        echo "Sorry!";  
    }  
    $result=NULL;   
    $mysqli->close();  
    ?>
    Nach dem Login kopieren

这种用法中,使用mysqli之前要先new一个对象,然后使用该实例对象进行操作。


PDO

PHP的一个数据对象,它提供了一个统一的连接数据库的API,它代表的是和数据库之间的一个连接,类似于java中的jdbc。

简单举例如下:



[php] view plain copy


<?php  
$pdo = new PDO(&#39;pgsql:host=192.168.1.111;port=5432;dbname=anydb&#39;, &#39;anyuser&#39;, &#39;pw&#39;);//连接到数据库  
sleep(5);  
$stmt = $pdo->prepare(&#39;SELECT * FROM sometable&#39;);  
$stmt->execute();  
$pdo = null;//关闭连接  
?>
Nach dem Login kopieren


由于从PHP 6 开始要完全使用PDO方式而非其他方式连接数据库,所以接下来详细研究一番:

1、为什么要用PDO,用PDO有什么好处?


PDO (PHP Data Object) ist eine leichte, einheitliche Schnittstelle für PHP für den Zugriff auf die Datenbank. Es bietet eine Abstraktionsschicht für den Datenzugriff, was bedeutet, dass unabhängig von der Datenbank dieselbe Methode zum Abfragen oder Lesen verwendet werden kann. Es ist zu beachten, dass PDO selbst keine Datenbankfunktionen implementieren kann, sondern für den Zugriff auf Datenbankdienste einen PDO-Treiber einer bestimmten Datenbank verwenden muss.

2. Wie verwende ich PDO?

Hier nehmen wir PHPs goldenen Partner MySQL als Beispiel:

PDO_MYSQL: PDO_MYSQL ist der Treiber für die PDO-Schnittstelle, die die Verbindung zur MySQL-Datenbank herstellen kann (Hinweis: wird nur für MySQL 3.x oder höher verwendet) .

Installation: Öffnen Sie die php.ini-Datei und Sie können den folgenden Code finden. Hier können Sie sehen, dass der MySQL-Treiber aktiviert ist standardmäßig aktiviert (nicht vorne angezeigt) Semikolon wird für Kommentare verwendet), wenn Sie eine Verbindung zu anderen Datenbanken herstellen müssen, fügen Sie selbst Treiber für andere Datenbanken hinzu (entfernen Sie das Semikolon vor dem entsprechenden Element und fügen Sie es hinzu, wenn es keines gibt).





[php]Ebene anzeigenKopieren


  1. //各数据库的PDO驱动  
    extension=php_pdo.dll   
    extension=php_pdo_firebird.dll //Firebird  
    extension=php_pdo_informix.dll //Informix  
    extension=php_pdo_mssql.dll    //sql server  
    extension=php_pdo_mysql.dll    //mysql  
    extension=php_pdo_oci.dll      //Oracle  
    extension=php_pdo_oci8.dll   
    extension=php_pdo_odbc.dll     //DB2  
    extension=php_pdo_pgsql.dll    //PostgreSQL  
    extension=php_pdo_sqlite.dll   //SQLite
    Nach dem Login kopieren

连接:通过创建PDO基类的实例创建连接。



[php] view plain copy


//连接到数据库  
$db = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, $user, $pass);
Nach dem Login kopieren



[php] view plain copy


//处理连接错误  
try {  
    $db = new PDO(&#39;mysql:host=localhost;dbname=test&#39;, $user, $pass);  
    //查询  
    foreach($db->query(&#39;SELECT * from FOO&#39;) as $row) {  
        print_r($row);  
    }  
    $dbh = null;  
} catch (PDOException $e) {  
    print "Error!: " . $e->getMessage() . "<br/>";  
    die();  
}
Nach dem Login kopieren




[php] view plain copy


//关闭连接  
$db = null;
Nach dem Login kopieren

PDO方式连接数据库mysql的实例:



[php] view plain copy


  1. <?php  
        $dbms=&#39;mysql&#39;;       //数据库 mysql  
        $host=&#39;localhost&#39;;   //数据库主机名  
        $dbName=&#39;test&#39;;      //数据库名  
        $user=&#39;root&#39;;        //连接用户名  
        $pass=&#39;&#39;;            //密码  
        $dsn="$dbms:host=$host;dbname=$dbName";  
        classdbextendsPDO{  
           publicfunction__construct(){  
                try{  
                    parent::__construct("$GLOBALS[dsn]",$GLOBALS[&#39;user&#39;],$GLOBALS[&#39;pass&#39;]);  
                 }catch(PDOException$e){  
                     die("Error: ".$e->__toString()."<br/>");  
                }  
           }  
           publicfinalfunctionquery($sql){  
                try{  
                    returnparent::query($this->setString($sql));  
                }catch(PDOException$e){  
                    die("Error: ".$e->__toString()."<br/>");  
                }  
           }  
           privatefinalfunctionsetString($sql){  
                echo"处理查询";  
                return $sql;  
           }  
        }  
        $db=new db();  
        $db->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);  
        foreach($db->query(&#39;select * from table_name&#39;) as $row){  
           print_r($row);  
        }  
        $db->exec(&#39;delete from table_name where id=11&#39;);  
    ?>
    Nach dem Login kopieren

3、更多的PDO方法:



[php] view plain copy


PDO::beginTransaction — 启动一个事务  
PDO::commit — 提交一个事务  
PDO::__construct — 创建一个表示数据库连接的 PDO 实例  
PDO::errorCode — 获取跟数据库句柄上一次操作相关的 SQLSTATE  
PDO::errorInfo — Fetch extended error information associated with the last operation on the database handle  
PDO::exec — 执行一条 SQL 语句,并返回受影响的行数  
PDO::getAttribute — 取回一个数据库连接的属性  
PDO::getAvailableDrivers — 返回一个可用驱动的数组  
PDO::inTransaction — 检查是否在一个事务内  
PDO::lastInsertId — 返回最后插入行的ID或序列值  
PDO::prepare — Prepares a statement for execution and returns a statement object  
PDO::query — Executes an SQL statement, returning a result set as a PDOStatement object  
PDO::quote — Quotes a string for use in a query.  
PDO::rollBack — 回滚一个事务  
PDO::setAttribute — 设置属性
Nach dem Login kopieren




[php] view plain copy


PDOStatement::bindColumn — 绑定一列到一个 PHP 变量  
PDOStatement::bindParam — 绑定一个参数到指定的变量名  
PDOStatement::bindValue — 把一个值绑定到一个参数  
PDOStatement::closeCursor — 关闭游标,使语句能再次被执行。  
PDOStatement::columnCount — 返回结果集中的列数  
PDOStatement::debugDumpParams — 打印一条 SQL 预处理命令  
PDOStatement::errorCode — 获取跟上一次语句句柄操作相关的 SQLSTATE  
PDOStatement::errorInfo — 获取跟上一次语句句柄操作相关的扩展错误信息  
PDOStatement::execute — 执行一条预处理语句  
PDOStatement::fetch — 从结果集中获取下一行  
PDOStatement::fetchAll — 返回一个包含结果集中所有行的数组  
PDOStatement::fetchColumn — 从结果集中的下一行返回单独的一列。  
PDOStatement::fetchObject — 获取下一行并作为一个对象返回。  
PDOStatement::getAttribute — 检索一个语句属性  
PDOStatement::getColumnMeta — 返回结果集中一列的元数据  
PDOStatement::nextRowset — 在一个多行集语句句柄中推进到下一个行集  
PDOStatement::rowCount — 返回受上一个 SQL 语句影响的行数  
PDOStatement::setAttribute — 设置一个语句属性  
PDOStatement::setFetchMode — 为语句设置默认的获取模式。
Nach dem Login kopieren





[php] view plain copy


Exception::getMessage — 获取异常消息内容。  
Exception::getPrevious — 返回异常链中的前一个异常  
Exception::getCode — 获取异常代码  
Exception::getFile — 获取发生异常的程序文件名称  
Exception::getLine — 获取发生异常的代码在文件中的行号  
Exception::getTrace — 获取异常追踪信息  
Exception::getTraceAsString — 获取字符串类型的异常追踪信息  
Exception::toString — 将异常对象转换为字符串  
Exception::clone — 异常克隆
Nach dem Login kopieren

本文转自:https://blog.csdn.net/llittlepig/article/details/38272769

Das obige ist der detaillierte Inhalt vonSo verbinden Sie PHP mit mysql-mysqli und PDO. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage