【发布时间】:2016-12-07 06:18:28
【问题描述】:
已解决:从我的表单中获取值时使用 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;
不知道我做错了什么或忽略了什么,但希望能提供任何意见。
-编辑- 创建我正在查询的 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);
【问题讨论】:
-
如果你尝试
>=大于或等于呢?SELECT bTitle FROM Book WHERE bQuantity >= 9; -
什么是 bQuantity 列数据类型?
-
该查询在语法上是有效的。将其完全复制并粘贴到 MySQL 控制台中,它会起作用(假设存在正确的表和列等)。我们没有看到的事情正在这里发生……
-
做。不是。 HTML转义。这。询问!你为什么要这样做?
-
@deceze♦ @DhruvSaxena2 谢谢你们,没有 htmlentities() 也能正常工作。我是 html 和 php 的新手,对 htmlentities 的工作方式没有正确的理解,但我知道一开始就在那里是错误的。