Question

  1. aurais-je besoin d'utiliser véritable évasion dans mes deux INSERT et SELECT des états?
  2. pourquoi la syntaxe que je utilise dans l'exemple suivant ne fonctionne pas (Il est juste l'une des nombreuses façons que j'ai essayé)?

    //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());
    }
    
Était-ce utile?

La solution

Je recommande fortement que vous évitez échapper tout à fait, et passer directement à instructions préparées avec mysqli :: préparer, 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);

Autres conseils

Il semble que vous essayez d'utiliser sprintf () , de 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)
);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top