2009-08-19 19 views
7

Nowość w tym nowym i bezpiecznym sposobie obsługi skryptów SQL w PHP i MySql opartych na przeglądarce internetowej, w celu zabezpieczenia kodu przed iniekcjami SQL. Planuję zacząć używać mysqli z PDO. Czy każdy może opisać, jak powinienem zacząć i kontynuować.przygotowane sparametryzowane zapytanie z PDO

Pomocne będzie również odniesienie do dowolnego artykułu.

Z góry dziękuję.

Odpowiedz

11

Aby utworzyć połączenie

try { 
    $db = new PDO("mysql:dbname=".DB_NAME.";host=".DB_HOST,DB_USER,DB_PWD); 
} catch (PDOException $e) { 
    die("Database Connection Failed: " . $e->getMessage()); 
} 

Następnie przygotować oświadczenie

$prep = $db->prepare("SELECT * FROM `users` WHERE userid = ':id'"); 

Jak widać, to etykieta każdy parametr, który chcesz poprzedzając każdy ciąg z „:”. Następnie wystarczy przekazać tablicę odwzorowującą parametr (: id) na wartość podczas wykonywania.

if (!$prep->execute(array(":id" => $userinput))) { 
    $error = $prep->errorInfo(); 
    echo "Error: {$error[2]}"; // element 2 has the string text of the error 
} else { 
    while ($row = $prep->fetch(PDO::FETCH_ASSOC)) { // check the documentation for the other options here 
     // do stuff, $row is an associative array, the keys are the field names 
    } 
} 

Zamiast PDO :: FETCH_ASSOC z funkcji „fetch”, istnieje wiele innych sposobów na zdobycie danych. Możesz użyć fetchAll, aby uzyskać tablicę WSZYSTKICH wyników naraz, zamiast przechodzić kolejno po wierszach. Lub możesz uzyskać tablicę informacji jako tablicę z indeksowaniem 0, lub możesz nawet pobrać wyniki bezpośrednio do instancji klasy (jeśli nazwy pól pokrywają się z właściwościami klasy).

Cała dokumentacja PDO można znaleźć tutaj: PHP.net PDO Manual

+0

Uważam, że nie potrzebujesz cytatów wokół symbolu zastępczego: '" SELECT * FROM \ 'users \ "WHERE userid =: id" ' –

Powiązane problemy