SQL-инъекции
Пример SQL-инъекции на борту самолета https://habrahabr.ru/post/318228/
/// this part should be completely remastred /// этот раздел должен быть полностью переписан
$id = $_GET["id"];
// 5 OR 1=1
// 5' OR '1'='1
// 5\' OR \'1\'=\'1
$s_id= addslashes($id)
SELECT name, credit_card
FROM profile
WHERE id = '$s_id'
SELECT name, credit_card
FROM profile
WHERE id = (DROP DATABASE )
mysqli_real_escape_string
http://habrahabr.ru/post/148701/
$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");
$stmt->execute(array("%$_GET[name]%")); $data = $stmt->fetchAll();
mysqli_prepare
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?"))
{
$stmt->bind_param("s", $city);
$stmt->execute();
$stmt->bind_result($district);
$stmt->fetch();
printf("%s is in district %s\n", $city, $district);
$stmt->close();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";
if ($stmt = $mysqli->prepare($query)) {
/* Запустить выражение */
$stmt->execute();
/* Определить переменные для результата */
$stmt->bind_result($name, $code);
/* Выбрать значения */
while ($stmt->fetch()) {
printf ("%s (%s)\n", $name, $code);
}
/* Завершить запрос */
$stmt->close();
}
Множественные параметры
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
/* выполнение подготовленного запроса */
$stmt->execute();
Вывод нескольких строк
/* prepare statement */
if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
$stmt->execute();
/* bind variables to prepared statement */
$stmt->bind_result($col1, $col2);
/* fetch values */
while ($stmt->fetch()) {
printf("%s %s\n", $col1, $col2);
}
/* close statement */
$stmt->close();
}