Heim >Backend-Entwicklung >PHP-Tutorial >So betreiben Sie eine MySQL-Datenbank mit PHP mithilfe von mysqli
Dieser Artikel stellt hauptsächlich vor, wie PHP MySQL zum Betreiben der MySQL-Datenbank verwendet. Ich hoffe, dass er für alle hilfreich ist.
Die MySQLi-Erweiterung von PHP bietet alle Funktionen der Vorgängerversion. Da MySQL bereits ein Datenbankserver mit vollem Funktionsumfang ist, fügt dies PHP außerdem einige neue Funktionen hinzu. Mysqli unterstützt auch diese neuen Funktionen.
1. Herstellen und Trennen der Verbindung
Bei der Interaktion mit einer MySQL-Datenbank wird zuerst die Verbindung hergestellt und zuletzt getrennt. Dazu gehört die Verbindung zum Server, die Auswahl einer Datenbank und schließlich das Schließen der Verbindung . Wie bei fast allen Funktionen von MySQL kann dies mithilfe eines objektorientierten Ansatzes oder eines prozeduralen Ansatzes erreicht werden.
1. Erstellen Sie ein MySQLi-Objekt
$_mysqli = newmysqli();
2 . Verbinden Sie den Host, den Benutzer, das Passwort und die Datenbank von MySQL
$_mysqli->connect( 'localhost' , 'root' , 'yangfan' , 'guest' );
3. Erstellen Sie ein MySQLi-Objekt mit Verbindungsparametern
$_mysqli = newmysqli( 'localhost' , 'root' , 'yangfan' , ' Gast ');
4. Wählen Sie die Datenbank einzeln aus
$_mysqli->select_db( 'testguest' );
5. MySQL trennen
$_mysqli->close();
2. Umgang mit Verbindungsfehlern
Wenn keine Verbindung zur MySQL-Datenbank hergestellt werden kann, ist es unwahrscheinlich, dass die Seite weiterhin ihre beabsichtigte Aufgabe erfüllt. Beobachten Sie daher unbedingt Verbindungsfehler und reagieren Sie entsprechend. Die Mysqli-Erweiterung enthält viele Funktionen, die zum Erfassen von Fehlerinformationen verwendet werden können, beispielsweise die Methoden mysqli_connect_errno() und mysqli_connect_error().
Die Funktion mysqli_connect_errno() gibt die Fehlernummer zurück, die durch die Verbindung zur Datenbank zurückgegeben wird.
Die Funktion Mysqli_connect_error() gibt den Fehlercode zurück, der durch die Verbindung zur Datenbank zurückgegeben wird.
if(mysqli_connect_errno()) { echo' 数据库连接错误,错误信息: ' .mysqli_connect_error(); exit(); }
Das errno-Attribut gibt die Fehlernummer während des Datenbankbetriebs zurück.
Das Fehlerattribut gibt den Fehlercode während des Datenbankbetriebs zurück.
if( $_mysqli ->errno) { echo' 数据库操作时发生错误,错误代码是: ' . $_mysqli ->error; }
Drei. Interaktion mit der Datenbank
Die überwiegende Mehrheit der Abfragen bezieht sich auf Erstellungs-, Abruf-, Aktualisierungs- und Löschaufgaben, die zusammen als CRUD bezeichnet werden.
1. Daten abrufen
Der größte Teil der Arbeit von Webprogrammen besteht darin, die angeforderten Daten abzurufen und zu formatieren. Dazu müssen Sie eine SELECT-Abfrage an die Datenbank senden, die Ergebnisse iterativ verarbeiten, jede Zeile an den Browser ausgeben und entsprechend Ihren eigenen Anforderungen ausgeben.
// 设置一下编码 utf8 $_mysqli->set_charset( "utf8" ); // 创建一句 SQL 语句 $_sql = "SELECT* FROM t g_user" ; // 执行 sql 语句把结果集赋给$_result $_result = $_mysqli->query( $_sql ); // 将结果集的第一行输出 print_r( $_result->fetch_row()); // 释放查询内存 ( 销毁 ) $_result->free();
2. Abfrageergebnisse analysieren
Sobald die Abfrage ausgeführt wurde, werden die Ergebnisse angezeigt Sind fertig eingestellt, können Sie die erhaltenen Ergebniszeilen unten analysieren. Sie können mehrere Methoden verwenden, um die Felder in jeder Zeile abzurufen. Welche Methode Sie wählen, hängt hauptsächlich von Ihren persönlichen Vorlieben ab, da sich nur die Methode zur Referenzierung der Felder unterscheidet.
Fügen Sie die Ergebnismenge in das Objekt ein
Da Sie die objektorientierte Syntax von MySQL verwenden können, können Sie die Ergebnismenge objektorientiert verwalten. Dies kann mit der Methode fetch_object() erfolgen.
//Packen Sie die Ergebnismenge in ein Objekt
$_row = $_reslut->fetch_object();
// Geben Sie ein Feld (Attribut) im Objekt aus
echo $_row->tg_username;
// Alle Benutzernamen durchlaufen
while (!! $_row =$_reslut ->fetch_object()) {
echo$_row ->tg_username. ' df250b2156c434f3390392d09b1c9563 >
//Packen Sie die Ergebnismenge in ein Array (Index + Assoziation)$_row = $_reslut->fetch_array();// Geben Sie das Feld mit Index 3 aus ( Attribut)
echo $_row [ 3 ];// Packen Sie die Ergebnismenge in ein Indexarray$_row = $_reslut->fetch_row(); echo $_row [ 3 ];// Packen Sie die Ergebnismenge in ein assoziatives Array$_row = $_reslut->fetch_assoc();echo $_row ['tg_username' ]; 3. Bestimmen Sie die ausgewählte Zeile und die betroffenen Zeilen Dies ist normalerweise wünschenswert in der Lage sein, die SELECT-Anzahl der von der Abfrage zurückgegebenen oder von einer INSERT-, UPDATE- oder DELET-Abfrage betroffenen Zeilen zu bestimmen. Wir können die beiden Attribute „num_rows“ und „affected_rows“ verwenden.
// Wenn Sie bei Verwendung einer Abfrage wissen möchten, wie viele Zeilen von SELECT abgefragt wurden, können Sie „num_rows“ verwenden. echo $_reslut->num_rows;
// Wenn Sie bei der Verwendung von Abfragen wissen möchten, wie viele Zeilen von SELECT-, INSERT-, UPDATE- und DELETE-Abfragen betroffen sind, können Sie Folgendes verwenden: Affect_rows; beachten Sie, dass es sich um ein Attribut unter $_mysqlihandelt
echo $_mysqli->affected_rows;
4. 移动指针的操作和获取字段
当你并不想从第一条数据开始获取 ,或者并不想从第一个字段获取 , 你可以使用数据指针移动或者字段指针移动的方式调整到恰当的位置。 当然 , 你还可以获取字段的名称及其相关的属性。
// 计算有多少条字段 echo $_reslut->field_count; // 获取字段的名称 $_field = $_reslut->fetch_field(); echo $_field->name; // 遍历字段 while (!! $_field =$_reslut ->fetch_field()) { echo$_field ->name. '<br />' ; } // 一次性取得字段数组 print_r( $_reslut->fetch_fields()); // 移动数据指针 $_reslut->data_seek( 5 ); // 移动字段指针 $_reslut->field_seek( 2 );
5. 执行多条 SQL 语句
有的时候 ,我们需要在一张页面上同时执行多条 SQL 语句 , 之前的方法就是分别创建多个结果集然后使用。但这样资源消耗很大,也不利于管理。PHP 提供了执行多条 SQL 语句的方法 $_mysqli->multi_query() ;
// 创建多条 SQL 语句 $_sql .="SELECT * FROM tg_user;" ; $_sql .="SELECT * FROM tg_photo;" ; $_sql .="SELECT * FROM tg_article" ; // 开始执行多条 SQL 语句 if ( $_mysqli->multi_query( $_sql )) { //开始获取第一条 SQL 语句的结果集 $_result= $_mysqli ->store_result(); print_r($_result ->fetch_array()); //将结果集指针移到下一个 $_mysqli->next_result(); $_result= $_mysqli ->store_result(); print_r($_result ->fetch_array()); $_mysqli->next_result(); $_result= $_mysqli ->store_result(); print_r($_result ->fetch_array()); } else { echo'sql 语句有误! ' ; }
6. 执行数据库事务
事务 (transaction)是作为整个一个单元的一组有序的数据库操作 。 如果一组中的所有操作都成功 , 则认为事务成功 ,即使只有一个失败操作 , 事务也不成功 。 如果所有操作成功完成 , 事务则提交 (commit) ,其修改将作用于所有其他数据库进程 。 如果一个操作失败 , 则事务将回滚 (roll back),该事务所有操作的影响都将取消。
首先 , 您的 MySQL 是InnoDB 或 BDB 引擎的一种 , 一般来说 , 你安装了 AppServ 的集成包 , 你选择 InnoDB的引擎的数据库即可 。 如果你建立的表不是 InnoDB , 可以在 phpmyadmin里修改。
// 首先你必须关闭自动提交数据 $_mysqli->autocommit( false ); // 创建一个 SQL 语句,必须同时运行成功,不能出现一个成功,一个失败 $_sql .="UPDATE tg_friend SET tg_state=tg_state+5 WHERE tg_id=1;" ; $_sql .="UPDATE tg_flower SET tg_flower=tg_flower-5 WHERE tg_id=1;" ; // 执行两条 SQL 语句 if ( $_mysqli->multi_query( $_sql )) { //获取第一条 SQL 一影响的行数 $_success= $_mysqli ->affected_rows == 1 ? true : false ; //下移,第二条 SQL $_mysqli->next_result(); //获取第二条 SQL 影响的行数 $_success2 = $_mysqli ->affected_rows == 1 ? true : false ; //判断是否都正常通过了,两个 SQL if( $_success && $_success2 ) { $_mysqli->commit(); echo' 完美提交! ' ; }else { $_mysqli->rollback(); echo' 程序出现异常! ' ; } } } else { echo"SQL 语句有误: " . $_mysqli ->errno. $_mysqli ->error; } // 最后还必须开启自动提交 $_mysqli->autocommit( true );
以上就是本文的全部内容,希望对大家的学习有所帮助。
相关推荐:
Das obige ist der detaillierte Inhalt vonSo betreiben Sie eine MySQL-Datenbank mit PHP mithilfe von mysqli. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!