-1

已解决:问题是使用 htmlentities() 从我的表单中获取更改“>”和“<”的值

< 变成 <
> 变成 >

sql无法识别,从而导致我的问题!

我在 c9.io 上用 HTML 和 PHP 编写了一个基本网站,可以将查询发送到 SQL 数据库。我发送的大多数查询都可以正常工作,只要它们不使用大于或小于导致语法错误的运算符。例如:

SELECT bTitle FROM Book WHERE bQuantity > 9; 

导致错误:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“9”附近使用正确的语法

但是,如果我只是使用相等运算符,它就可以正常工作。

SELECT bTitle FROM Book WHERE bQuantity = 10;

不知道我做错了什么或忽略了什么,但希望有任何意见。

-edit- 创建我正在查询的 Book 表的代码摘录。

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);
4

1 回答 1

2

看起来您正在使用函数 htmlspecialchars() 进行查询。这是唯一可能的解释。呼应您的问题以作证明。

于 2016-12-05T08:27:37.200 回答