2017-10-02 10 views
0

J'ai un script php qui contient de nombreuses fonctions mysql sans connexion à la base de données, et pour des raisons de sécurité pour empêcher l'injection SQl, je voudrais remplacer ces fonctions mysql par des fonctions pdo.Quel est l'équivalent de ces fonctions mysql dans pdo?

$e = mysql_real_escape_string($l); 

$query = "SELECT * FROM users"; 
$result = mysql_query($query); 
$row = mysql_fetch_assoc($result) 

$query = "SELECT * FROM users WHERE (first_name='" . $f_name . "' AND last_name='" . $l_name . "') OR (email = '" . $email . "')"; 
    $result = mysql_query($query); 
    $row = mysql_fetch_assoc($result); 

$insert = "INSERT INTO users(`email`, `first_name`, `last_name`, `created_at`, `modified_at`) VALUES ('{$email}', '{$f_name}', '{$l_name}','" . date('Y-m-d H:i:s') . "','" . date('Y-m-d H:i:s') . "');"; 

$update = "UPDATE users SET `is_user`=1 WHERE user_id=" . $user_id; 

mysql_query($insert) or die(mysql_error()); 

mysql_query($update) or die(mysql_error()); 
+1

Que voulez-vous dire par _opposite_? – TGrif

+0

PDO en lui-même ne protège pas plus que d'autres API - vous avez besoin de lier les variables pour se protéger contre les attaques, et d'autres API offrent cela aussi. Cela étant dit, ce n'est pas un service de conversion de code - lisez le manuel de ['PDO :: prepare()'] (http://php.net/pdo.prepare) et ['PDOStatement :: bindParam() '] (http://php.net/pdostatement.bindparam) pour commencer. – Qirel

+1

Voulez-vous dire l'équivalent de ces fonctions? – the4kman

Répondre

0

Ceci est une version propre, vous pouvez utiliser pour faire AOP:

<?php 
    $cnx = new PDO('mysql:host=HOST;dbname=DATABASE','userid','passeword'); 
    $cnx->query('SET NAMES utf8'); 
    $cnx->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION); 

    try{ 
     $req = $cnx->prepare("SELECT * FROM users WHERE (first_name=:firstname AND last_name=:lastname) OR (email=:mail);"); 
     $req-> bindValue(':firstname',$f_name); 
     $req-> bindValue(':lastname',$l_name); 
     $req-> bindValue(':mail',$email); 
     $req-> execute(); 

     $data = $req->fetchAll(PDO::FETCH_COLUMN); 

    } 
    catch(PDOExeption $e){} 
?> 

D'après ce que vous avez besoin, voir la différence entre: PDO :: FETCH_FUNC/AOP :: FETCH_COLUMN/AOP :: FETCH_GROUP

fetchAll doc:
http://php.net/manual/fr/pdostatement.fetchall.php

Vous pouvez également lier toutes vos valeurs sur une seule ligne, voir la documentation binValue.

+0

Il n'y a rien de propre dans ce code, il comporte de nombreux défauts critiques. Étant donné que vous vous battez avec la syntaxe la plus élémentaire, ce n'est pas une bonne idée de répondre à d'autres questions. –