PDO ist ein Akronym für PHP Data Objects. PDO ist eine schlanke, konsistente Möglichkeit, auf Datenbanken zuzugreifen. Dies bedeutet, dass Entwickler portablen Code viel einfacher schreiben können. PDO ist keine Abstraktionsschicht wie PearDB. PDO ist eher eine Datenzugriffsschicht, die eine vereinheitlichte API (Application Programming Interface) verwendet. Sie haben grundsätzlich zwei Möglichkeiten, dies zu erreichen:
Beispiel:
$qry = $con->prepare('SELECT * FROM student WHERE name = :name');
$qry->execute(array('name' => $name));
foreach ($qry as $get) {
// do something with $get
}
Einrichten Datenbank PDO mit
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
Ein DSN ist im Grunde eine Reihe von Optionen, die PDO sagen, welche Treiber zu verwenden , und die Verbindungsdetails ... Sie können alle Optionen hier PDO MYSQL DSN nachschlagen.
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username,$password);
Hinweis: Wenn Sie einen Fehler über Zeichensätze erhalten, stellen Sie sicher, dass Sie den charset Parameter auf den DSN hinzuzufügen. Das Hinzufügen des Zeichensatzes zum DSN ist aus Sicherheitsgründen sehr wichtig. Die meisten Beispiele, die Sie sehen werden, lassen es nicht zu. MÜSSEN SIE DEN CHARSET EINSCHLIESSEN!
Sie können auch einige Attribute nach PDO Konstruktion mit dem setAttribute Verfahren eingestellt:
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
Die Art und Weise Angriffe Injektionstyp arbeiten, ist durch irgendwie einen Interpreter (Die Datenbank) immer etwas zu bewerten, sollte das waren Daten, als ob es Code wäre. Dies ist nur möglich, wenn Sie Code und Daten auf demselben Medium mischen (zB wenn Sie eine Abfrage als String erstellen) .Parametrisierte Abfragen arbeiten, indem Sie den Code und die Daten separat senden, so dass es nie möglich sein würde, ein Loch zu finden Das.
sollten Sie vorbereitete Anweisungen verwenden: http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers – awl19
Dies ist SQL Injection, und ja, es ist schlecht. Als @ awl19 erwähnt, verwenden Sie vorbereitete Anweisungen oder verwenden Sie eine Bibliothek wie MeekroDB (http://meekro.com/), um Ihre Abfragen auszuführen (es würde auch die Datenbankarbeit viel einfacher machen) – mwieczorek