Einführung:
Die PDO-Erweiterung definiert eine leichte, konsistente Schnittstelle für PHP für den Zugriff auf die Datenbank. Sie bietet eine Abstraktionsschicht für den Datenzugriff, sodass Daten unabhängig von der verwendeten Datenbank abgefragt und abgerufen werden können kann durch konsistente Funktionen ausgeführt werden.
Bietet eine Abstraktionsschicht für den Datenbankzugriff, die es uns ermöglicht, verschiedene Datenbanken durch konsistente Funktionen und Schreibmethoden zu betreiben, was für zukünftige Datenbankmigrationen von Vorteil ist und natürlich auch die Sicherheit verbessert.
Vergleich:
PHP verwendet MySQL als Beispiel. Zu den häufig verwendeten Methoden gehören php_mysql, php_mysqli, pdo
1. php_mysql und php_mysqli sind nicht portierbar und können nur auf MySQL angewendet werden Datenbank und PDO können problemlos transplantiert werden.
2.php_mysql ist eine Funktion, mit der wir lernen, die Datenbank zu bedienen, wenn wir mit PHP noch nicht vertraut sind. Tatsächlich wird sie jedoch selten verwendet. Der wichtigste Punkt ist, dass sie leicht zu Sicherheitsproblemen führen kann.
Da es eine SQL-Injection gibt, stellt PHP die Funktion mysql_real_escape_string bereit. Wenn es viele Variablen gibt, muss jede einzelne mysql_real_escape_string durchlaufen
Stattdessen wird es sehr problematisch.
3.pdo unterstützt die Vorverarbeitungsfunktion, um SQL-Injection effektiv zu vermeiden und die Effizienz zu verbessern.
4.php_mysqli und pdo unterstützen beide objektorientiert.
5.pdo Die lange Verbindungsmethode hat eine bessere Leistung als php_mysqli (siehe Online-Informationen)
Der Vorteil der php_mysql-Methode ist nicht mehr groß und Das Schlimmste an php_mysqli ist, dass es nicht auf andere Datenbanken portiert werden kann, es sei denn, Sie sind sicher, dass Sie die Datenbank nicht ändern werden. Offensichtlich wird die PDO-Methode zum Herstellen einer Verbindung zur Datenbank ein Trend sein.
Einfache PDO-Datenbankoperation:
Zuerst muss PHP PHP-PDO-bezogene Erweiterungen aktivieren
<?php $dbType = 'mysql'; $dbUser = 'root'; $dbPass = 'simael'; $dbhost = 'localhost'; $dbName = 'pdotest'; $dsn="$dbType:host=$dbhost;dbname=$dbName"; try{ $pdo = new PDO($dsn, $dbUser, $dbPass); echo "PDO成功连接MySQL数据库!"; }catch(PDOException $exception){ echo $exception->getMessage(); }
Daten einfügen
<?php //$pdo->query('set names utf8'); $sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()"; $res1 = $pdo->exec($sql); var_dump($res1);
Zu diesem Zeitpunkt ging ich zur Datenbank und stellte fest, dass die chinesischen Schriftzeichen aufgrund verschiedener Codierungsprobleme möglicherweise verstümmelt waren
Code hinzufügen
$pdo->query('set names utf8');
Die online zusammengefassten Codierungsprobleme, die beachtet werden müssen, sind wie folgt :
1. Das Serverprogramm deklariert die Codierung, z. B. header("Content-type: text/html; charset=utf-8");
3. Datenbankkodierung, Tabellen- und Feldkodierung
4
5. Bitte deklarieren Sie die Kodierung, wenn Sie eine Verbindung zur Datenbank herstellen, z. B. $ pdo->query('set name utf8');
$dbType = 'mysql'; $dbUser = 'root'; $dbPass = 'simael'; $dbhost = 'localhost'; $dbName = 'pdotest'; $dsn="$dbType:host=$dbhost;dbname=$dbName"; try{ $pdo = new PDO($dsn, $dbUser, $dbPass,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES'utf8';")); //$pdo = new PDO($dsn, $dbUser, $dbPass); echo "PDO成功连接MySQL数据库!"; }catch(PDOException $exception){ echo $exception->getMessage(); } $pdo->query('set names utf8'); $sql = "INSERT INTO la_comments SET nick_name='formPdo',email='pdo@pdo.com',comment='中文comment',page_id='11',created_at=NOW(),updated_at=NOW()"; $res1 = $pdo->exec($sql); var_dump($res1); $sql = "SELECT * FROM la_comments"; $res2 = $pdo->query($sql); while($row = $res2->fetch()){ print_r($row); echo '
'; } $pdo = null; ?>