Datenbankabfragevorgang in PHP
Verwandte MySQL-Video-Tutorial-Empfehlung: „MySQL-Tutorial“
* 1. Abfragevorgang
* 2. Drei beteiligte Funktionen:
* 2-1. mysqli_query($db, $sql): SQL-Anweisung ausführen und die Ergebnismenge zurückgeben
* 2- 2. mysqli_errno($db): Gibt den Fehlercode der letzten Funktionsausführung zurück
* 2-3. Mysqli_error($db): Gibt die Fehlermeldung der letzten Funktionsausführung zurück
* 2-4. mysqli_num_rows($res): Gibt die Anzahl der Datensätze im Ergebnissatz zurück
* 2-5. mysqli_fetch_row($res): Gibt einen Datensatz in einem Indexarray zurück
* 2-5. mysqli_fetch_assoc($res): Gibt einen Datensatz als assoziatives Array zurück
* 2-5. mysqli_fetch_array($res,MYSQLI_NUM): Gibt einen Datensatz als Indexarray zurück
* 2-5. mysqli_fetch_array( $res,MYSQLI_ASSOC): Gibt einen Datensatz als assoziatives Array zurück
* 2-5. Mysqli_fetch_array($res,MYSQLI_BOTH): Gibt einen Datensatz als Index und relationales Array zurück
* 2-5 . Einen Datensatz im Objektmodus zurückgeben
* mysqli_free_result($result);
* 2-4. Schließen Sie die aktuelle Datenverbindung
* 3. Abfrageschritte:
* 3-1. Stellen Sie eine Verbindung zur Datenbank her
* 3-2. Bereiten Sie die SQL-Anweisung vor
* 3-3. Abfrage ausführen
* 3-4. Erkennungsergebnis
* 3-5. 5-1. Wenn es sich um Einfügen/Aktualisieren/Löschen handelt: Gibt die Anzahl der betroffenen Datensätze zurück
* 3-6. Schließen Sie die Datenbankverbindung
//1 ist keine Funktion, es müssen keine Klammern hinzugefügt werden
define ('DB_HOST', 'localhost'); define ('DB_USER', 'root'); define ('DB_PASS', 'root'); define ('DB_NAME', 'php'); define ('DB_CHAR', 'utf8'); $db = @mysqli_connect(DB_HOST, DB_USER, DB_PASS); if (mysqli_connect_errno($db)) { exit('连接失败'.mysqli_connect_error($db)); } mysqli_select_db($db, DB_NAME); mysqli_set_charset($db, DB_CHAR);
//2. SQL-Anweisung vorbereiten
$sql = "SELECT name,salary FROM staff"; $sql = "SELECT name AS 姓名,salary AS 工资 FROM staff WHERE age>90";
//3 erfolgreich, falsch
$result = mysqli_query($db, $sql); var_dump($result);die();
//4. Erkennungsergebnis
//Wenn die Ergebnismenge vorhanden ist
if (false != $result) { //这是写只是语义性更强 //如果结果集中存在记录,至少有一条 // if (mysqli_num_rows($result) > 0) { //mysqli_affected_rows($db)也可以完成同样的检测工作,注意参数是连接对象$db,不是结果集对象 if (mysqli_affected_rows($db) > 0) { // echo '共计:'.mysqli_num_rows($result).'条记录<br>'; echo '共计:'.mysqli_affected_rows($db).'条记录~~<br>';
//5. Verarbeiten Sie die Ergebnismenge
//5-1: Holen Sie sich den Indexteil
while($row = mysqli_fetch_array($result, MYSQLI_NUM)){
//Holen Sie sich den Indexteil Shortcut-Methode
while($row = mysqli_fetch_row($result)){
//5-2: Holen Sie sich den zugehörigen Teil
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)){
/ /Shortcut-Methode, um den zugehörigen Teil zu erhalten
while($row = mysqli_fetch_assoc($result)){
//5-3: Index + Assoziation
while($row = mysqli_fetch_array($result, MYSQLI_BOTH)){
//5-4: Der schnelle Weg, den Index + Assoziation zu erhalten, besteht darin, nicht zu übergeben im zweiten Parameter, der der Standardwert ist
while($row = mysqli_fetch_array($result)){
//5-4: In Form von Objekten
while($row = mysqli_fetch_object($result)){ // var_export($row);//以字符串方式表示查询结查 //如果是对象,可以用指向符来访问 echo $row->name.'--'.$row->salary; echo '<hr>'; //以变量方式表示,表示的内容更加完整丰富 // var_dump($row); } } else { echo '没有符合条件的记录'; } //查询失败的处理方式 } else { //必须要用exit()或die()终止脚本执行,否则后面的语句还会执行并会报错 exit('查询失败'.mysqli_errno($db).':'.mysqli_error($db)); }
//5. Geben Sie die Ergebnismenge frei (nur für select)
mysqli_free_result($result);
//6. Schließen Sie die Datenbankverbindung
mysqli_close($db);