اگر بخواهم به پرسش شما پاسخ دهم باید ابتدا آنرا کمی باز تر کنم
مقصود شما این است که اگر کوئری مانند ریز داشته باشیم:
~~$unsafe_variable = $_POST['user_input'];
mysql_query("INSERT INTO `table` (`column`) VALUES ('$unsafe_variable')");
یوزر شما می تواند چیزی مانند این را
~~value'); DROP TABLE table;--,
به صورت ورودی در بانک اطلاعاتی شما اینچکت کند یا وارد کند بدون اینکه شما خواسته باشید
~~INSERT INTO `table` (`column`) VALUES('value'); DROP TABLE table;--')
برای جلوگیری از چنین مشکلاتی باید برای بانک اطلاعاتی پشتیبان درایور بهتر است از PDO استفاده کنید مانند:
~~$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');
$stmt->execute(array('name' => $name));
foreach ($stmt as $row) {
// do something with $row
}
و به جای mysql بهتر است از mysqli استفاده کنید:
~~$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name); // 's' specifies the variable type => 'string'
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with $row
}