Как использовать mysqli_real_escape_string
в моем скрипте, чтобы предотвратить SQL-инъекцию. Я работал над некоторым кодом и задавал несколько вопросов здесь, и мне было рекомендовано использовать mysqli_real_escape_string
вместо mysql_real_escape_string
, проблема в том, что мой код не устанавливает соединение до тех пор, пока не будут сохранены переменные, которые я хочу защитить. Было высказано предположение, что я должен был использовать подготовленные заявления, но после некоторого поиска http://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php я чувствую себя более смущенным. Прямо сейчас, если делать то, что он не должен делать, он вставляет пустые значения/строки в мою таблицу, что из моего чтения, вероятно, связано с использованием mysqli_real_escaape_string
mysqli real escape string issues
Любые мысли или помощь приветствуются, я так расстроен и смущен, но все еще пытается учиться. Вот код:
<?php
//Form fields passed to variables
$manu = mysqli_real_escape_string($_POST['inputManu']);
$model = mysqli_real_escape_string($_POST['inputModel']);
$desc = mysqli_real_escape_string($_POST['inputDesc']);
//Connect to database using $conn
include ('connection.php');
//Insert record into table
$sql = "INSERT INTO gear (`id`,`manu`,`model`,`desc`)
VALUES (NULL,'$manu','$model','$desc')";
//Check for empty fields
if (isset($_POST['submit']))
{
foreach($_POST as $val)
{
if(trim($val) == '' || empty($val))
{
die('Error: ' . mysqli_error());
echo "Please complete all form fields!";
echo "<meta http-equiv='Refresh' content='3; URL=../add.php'>";
}
}
if (!mysqli_query($conn,$sql))
{
die('Error: ' . mysqli_error($conn));
}
else
{
//echo "1 record added";
echo "Success, You added the ".$manu." ".$model."";
echo "<meta http-equiv='Refresh' content='3; URL=../index.php'>";
}
}
else
{
echo "some error";
}
mysqli_close($conn);
?>
Это имеет смысл, и я вижу разницу в использовании от старого использования mysql. Спасибо – user3146788