I am trying to use the mysqli_real_escape_string() Function in a query.
Но вы на самом деле нет. В вашем запросе вы используете mysql_real_escape_string()
.
Плюс этот запрос искажен, поэтому он все равно не сработает. Ваши котировки находятся в неправильном месте. Попробуйте следующее:
$get_query = "SELECT P FROM Product WHERE Product_Id = " . (int) mysqli_real_escape_string($Product_Id);
Поскольку $Product_Id
в настоящее время приводится к integer
, вам не нужно обернуть его в кавычки в запросе (в предположении, Product_Id
столбец является целым числом на основе, так как вы литья его в целое, я предполагаю, что это).
И перемещение типа cast (int)
из аргумента в пределах mysqli_real_escape_string()
, чтобы фактически предшествовать функции, является тем, что вы ищете. Хотя в настоящее время нет необходимости набрасывать $Product_Id
, поскольку он избыточен и может фактически создавать больше проблем, чем он мог бы решить в некоторых случаях (Т.е. предположим, что $Product_Id
было каким-то образом настроено на строку [$Product_Id = 'Marcus'
], и затем вы передали ее целое число: (int) $Product_Id
оно вернет 0
, но без ошибок). Отрицательное целое также проскальзывает, и я предполагаю, что у вас нет отрицательных $Product_Id
, верно? Есть гораздо лучшие способы обнаружения и обработки типов переменных до отправки их в запрос. Но мы можем попасть в это другое время.
В вашем запросе была ошибочная одинарная кавычка (WHERE Product_Id ='
), которая вызывала ошибку синтаксического анализа.
[Little Bobby] (http://bobby-tables.com/) говорит, что [ваш сценарий подвержен риску инъекций SQL.] (Http://stackoverflow.com/questions/60174/how-can-i SQL--предотвращение-инъекции-в-РНР). Даже [избегая строки] (http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string) небезопасно! Подробнее о [подготовленных] (http://en.wikipedia.org/wiki/Prepared_statement) операциях для [MySQLi] (http://php.net/manual/en/mysqli.quickstart.prepared-statements.php). –
Прочтите [строки] (http://php.net/string). Вы цитируетесь неправильно. –
Вы должны узнать разницу между SQL и PHP, поскольку они являются разными языками. 'mysql_real_escape_string()' является функцией PHP, а не функцией SQL. –