2015-11-20 7 views
-3

Я использую mysqli_query() с динамической переменной $categoryName, где $categoryName будет динамическим, если имя категории будет выбрано на основе представления пользователя из формы.mysqli_query со специальными символами

В моей категории имени формы представления есть Food, Vintage clothing, Leisure, Angel's и т.д ...

Я все еще довольно новый для запроса контента из базы данных, в настоящее время удалось выйти с помощью mysqli_query() для запроса из базы данных, например, так:

$sqlCommand = mysqli_query($conn, "SELECT * FROM products WHERE category='$categoryName'"); 

Все прекрасно работает, и мне удалось запросить БД со своими существующими именами категории, однако, есть только один, который не работает является Angel's категории с ' символом апострофа в нем.

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given in....... 

Я подозреваю, что есть какой-то метод, как фильтр, который нужно назвать, прежде чем mysqli_query()?

+1

Попробуйте использовать '$ catName = mysqli_real_escape_string ($ conn, $ categoryName);' тогда в запросе используйте '$ catName' –

+1

Используйте команду подготовки и привязки параметров. В противном случае вы пропустите преимущества 'mysqli'. –

+0

@SamSwift 웃 да это работает :) – Vincent1989

ответ

2

Использование mysqli_real_escape_string

$cat_name = mysqli_real_escape_string($conn, $categoryName); 
$sqlCommand = mysqli_query($conn, "SELECT * FROM products WHERE category='$cat_name'"); 
1

Это называется SQL-Injection. В этом случае он не нужен и встречается в обычном бизнесе. Вы должны прочитать an article о SQL-Injection и предотвратить его в будущих проектах.

Вы можете избежать этой строки, используя

mysqli_real_escape_string($conn, $categoryName); 

Днем кодирования.

+1

Вам нужно добавить первый параметр в строку подключения 'mysqli_real_escape_string ($ link, $ categoryName);' – Saty

Смежные вопросы