Possible Duplicate:
Best way to prevent SQL Injection in PHPPHP/MySQL - Sử dụng và thực hành tốt nhất các chuỗi thoát
Cách tốt nhất để thoát khỏi chuỗi khi thực hiện truy vấn là gì? mysql_real_escape_string() có vẻ tốt nhưng tôi không biết chính xác cách sử dụng nó đúng cách.
Mã này có hoạt động đúng không?
<?php
/* Let's say that the user types "'#""#''"\{(})#&/\€ in a textfield */
$newStr = mysql_real_escape_string($str);
$query = "INSERT INTO table username VALUES ($str)";
mysql_query($query);
?>
EDIT:
Bây giờ tôi có mã này:
$email = $_POST['email'];
$displayName = $_POST['displayName'];
$pass = $_POST['pass1'];
$email = mysqli_real_escape_string($link, $email);
$displayName = mysqli_real_escape_string($link, $displayName);
$pass = mysqli_real_escape_string($link, $pass);
$insert = "INSERT INTO profiles (email, displayName, password)
VALUES ('$email', '$displayName', md5('$pass'))";
mysqli_query($link, $insert)
or die(mysqli_error($link));
Nhưng tôi nhận được lỗi này: Bạn có một lỗi trong cú pháp SQL của bạn; kiểm tra hướng dẫn tương ứng với phiên bản máy chủ MySQL của bạn để có cú pháp đúng để sử dụng gần '! "#! # ^!" #! " #!" # ^' '' '' 'tại dòng 1
Nếu người dùng nhập: '**! "#! # ^!" #! "* #!" # ^' '' '
'mysql_ *' chức năng không được chấp nhận. Sử dụng [PDO] (http://php.net/manual/en/book.pdo.php) hoặc [MySqli] (http://php.net/manual/en/book.mysqli.php). – Lion