PDO
Die PHP Data Objects(PDO)-Erweiterung stellt eine leichte, konsistente Schnittstelle bereit, um mit PHP auf Datenbanken zuzugreifen.
http://www.php-resource.de/handbuch/ref.pdo.htm
http://at2.php.net/pdo
SQl-Injection
SQL-Injection (dt. SQL-Einschleusung) bezeichnet das Ausnutzen einer Sicherheitslücke in Zusammenhang mit SQL-Datenbanken, die durch mangelnde Maskierung oder Überprüfung von Metazeichen in Benutzereingaben entsteht. Der Angreifer versucht dabei, über die Anwendung, die den Zugriff auf die Datenbank bereitstellt, eigene Datenbankbefehle einzuschleusen. Sein Ziel ist es, Daten in seinem Sinne zu verändern oder Kontrolle über den Server zu erhalten.
http://www.youtube.com/watch?v=1UL_jdtXfi4
http://www.tutorials.de/forum/php-tutorials/278244-sichere-datenbankzugriffe-durch-prepared-statements.html
Beispiel 1: Rückgabe eines Datensatzes
$id=$_GET["id"];
$user="...";//Username
$passwort="...";//Passwort des Users
$dbname="...";//Datenbankname
$dbc = new PDO("mysql:host=localhost;dbname=$dbname", $user, $passwort);
//$dbc->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT vorname, nachname FROM berechtigungen WHERE id=:id";
$stmt = $dbc->prepare($sql);
$stmt->bindParam( ":id", $id,PDO::PARAM_INT );
if($stmt->execute())
{
$data = $stmt->fetch(PDO::FETCH_OBJ);
echo $data->vorname ." ". $data->nachname;
}
$stmt = null;
$dbc = null;
Beispiel 2: Rückgabe mehrerer Datensätze
$str=$_GET["str"];
$user="...";//Username
$passwort="...";//Passwort des Users
$dbname="...";//Datenbankname
$dbc = new PDO("mysql:host=localhost;dbname=$dbname", $user, $passwort);
$sql="Select Vorname, Nachname From schueler where Klasse=:str order by Zahl asc";
$stmt = $dbc->prepare($sql);
$stmt->bindParam(":str", $str,PDO::PARAM_STR, 3);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_OBJ);
foreach ($result as $v) {
echo $name= $v->Vorname." ".$v->Nachname.", ";
} #end foreach
$result=null;
$dbc=null;