2016-12-05 6 views
-1

Solved: Problem was using htmlentities() when getting the value from my form which changes '>' and '<'Запросы, не признающие операторы '>' или '<'

< becomes &lt
> becomes &gt

which is not recognized by sql and thus causing my problem!

Я написал базовый веб-сайт в формате HTML и PHP на c9.io, который может отправлять запросы в базу данных SQL. Большинство запросов, которые я отправляю, работают нормально, если они не используют больше или меньше операторов, которые приводят к синтаксической ошибке. Например:

SELECT bTitle FROM Book WHERE bQuantity > 9; 

приведет к ошибке:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '9' at line 1

Но если я просто использовать равный оператору он работает отлично.

SELECT bTitle FROM Book WHERE bQuantity = 10; 

Не уверен, что я делаю неправильно или не замечаю, но буду признателен за любой ввод.

-edit- Выдержка кода, которая создает таблицу книг, которую я запрашиваю.

CREATE TABLE Book 
(
    bID INT, 
    bTitle VARCHAR(200), 
    bPrice DECIMAL, 
    bAuthor VARCHAR(200), 
    bQuantity INT, 
    supplierID INT, 
    subjectID INT 
); 

Вот где мой сайт принимает входные данные запроса

<form action="result.php" method="get" target="resframe"> 
    <label for="query_text">Enter Query:</label> 
    <input type="text" id="query_text" name="query_text"/> 
    <input type="submit" name="submit" value="send"/> 
</form> 

И мой result.php фактически делает запрос к базе данных здесь, используя следующий код, который работает на до сих пор все вопросы, за исключением тех, которые используют '<' или '>' или вариация '> =' '< ='

$val1 = htmlentities($_GET['query_text']); 
$results = mysqli_query($connect, $val1); 
+0

что делать, если вы попробуете '> =' больше или равно? 'SELECT bTitle FROM Book WHERE bQuantity> = 9; ' –

+0

Что такое тип столбца столбца bQuantity? – anon

+0

Этот запрос синтаксически действителен. Скопируйте и вставьте его точно так же, как в консоль MySQL, и он будет работать (при условии, что правильные таблицы и столбец существуют и т. Д.). Что-то, чего мы не видим, здесь происходит ... – deceze

ответ

2

Похоже, что вы используете функцию htmlspecialchars() для запроса. Это единственное возможное объяснение. повторите свой вопрос для доказательства.

+0

Я отредактировал мое сообщение, но я использую htmlentities(), и когда я повторяю свой запрос, он эхо правильно, поэтому что-то другое вызывает у него – Seth

+1

Так что вы не должны. –

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