Я занимался некоторыми исследованиями в mysqli_real_escape_string(), но я не совсем понимаю, как правильно использовать его в моем случае, чтобы помочь защитить от SQLInjection, используя мой код ниже, может кто-нибудь мне помочь исправить это? Я ценю всю помощь. Другие вопросы, касающиеся здесь reguarding инъекции SQL и PHP не реально ответить на мой вопрос reguarding правильного использования синтаксиса в моем формате, когда я использовал это:Проблема с синтаксисом mysql_real_escape_string()
"$city = mysqli_real_escape_string($_POST['City']);
Я получил только мой общий поиск независимо от того, что ввод " % $% город»или '% $% бизнеса'
<?php
$con = mysqli_connect(........);
// Check connection
if (mysqli_connect_errno())
{
echo "<option>Failed to connect to the Database</option>" ;
}
$city = mysqli_real_escape_string($con, $_POST['City']);
$business = mysqli_real_escape_string($con, $_POST['Business']);
$result = mysqli_query($con,"SELECT * FROM Business WHERE City LIKE '%$city%' AND BName LIKE '%$business%' ORDER BY City, BName ASC");
while($row = mysqli_fetch_array($result))
{
// do stuff here
}
// No other results
echo "<center>No other listings like $city or $business</center>";
// Free result set
mysqli_free_result($result);
mysqli_close($con);
?>
Забудьте о mysql_real_escape_string() 'и устаревшем расширении mysql - он заброшен и небезопасен. Если вы используете новое расширение mysqli, используйте его все время (среди других причин, потому что вы не можете смешивать два разных расширения базы данных). Подготовленные заявления - это путь; период. –
Я извиняюсь, что это была ошибка, с моей стороны, я использую mysqli, просто дезинфицируя ВСЕ вход, поэтому мой поиск продолжает оставаться «%%» вместо «% ПОЛЬЗОВАТЕЛЕЙ ВХОДОВ В ПЕРЕМЕННОЙ ФОРМЕ%» – dav3ydark007
Если у вас есть проблемы с вашим код, пожалуйста, отправьте реальный код. Если вы хотите предотвратить SQL Injection, используйте подготовленные операторы, а не escape-функции. –