2010-12-05 6 views
0
  1. Aurais-je besoin d'utiliser l'échappement réel dans mes instructions INSERT et SELECT FROM?
  2. pourquoi la syntaxe que j'utilise dans l'exemple suivant ne fonctionne pas (c'est juste l'une des nombreuses façons que j'ai essayé)?mysql_real_escape_string() n'échappe pas à quoi que ce soit

    //insert user input for word 1 
    $sql = "INSERT INTO test (Word1, Word2, Word3, Word4, Word5) 
    VALUES('$Word1','$Word2','$Word3','$Word4','$Word5')", 
    mysql_real_escape_string($Word1), 
    mysql_real_escape_string($Word2), 
    mysql_real_escape_string($Word3), 
    mysql_real_escape_string($Word4), 
    mysql_real_escape_string($Word5); 
    if(!mysql_query($sql,$con)) 
    { 
        die('Error: ' . mysql_error()); 
    } 
    

Répondre

1

Je recommande fortement que vous évitez échapper tout à fait, et passer directement à prepared statements avec mysqli::prepare, peut-être via PDO. Il est finalement plus simple et plus sûr:

$dsn = 'mysql:dbname=test;host=127.0.0.1'; 
$user = 'dbuser'; 
$password = 'dbpass'; 

$dbh = new PDO($dsn, $user, $password); 

$sql = 
    'INSERT INTO mytable ' . 
    '(Word1, Word2, Word3, Word4, Word5)' . 
    'VALUES(?, ?, ?, ?, ?)'; 

$stmt = $dbh->prepare($sql); 

$words = array('word1', 'word2', 'word3', 'word4', 'word5'); 
$stmt->execute($words); 

$words = array('word6', 'word7', 'word8', 'word9', 'word10'); 
$stmt->execute($words); 
4

Il semble que vous essayez d'utiliser sprintf(), pour le faire correctement, vous devez reformater votre code un peu:

$sql = sprintf("INSERT INTO test (Word1, Word2, Word3, Word4, Word5) 
VALUES('%s','%s','%s','%s','%s')", 
mysql_real_escape_string($Word1), 
mysql_real_escape_string($Word2), 
mysql_real_escape_string($Word3), 
mysql_real_escape_string($Word4), 
mysql_real_escape_string($Word5) 
); 
+0

quelle est la signification de% s? – Bodhidarma

+0

c'est un spécificateur de type de données pour les chaînes de formatage php, si vous allez à php.net/sprintf, il détaillera les différents prescripteurs de type disponibles – Patrick

Questions connexes