【问题标题】:Queries not recognizing '>' or '<' operators无法识别“>”或“<”运算符的查询
【发布时间】:2016-12-07 06:18:28
【问题描述】:

已解决:从我的表单中获取值时使用 htmlentities() 会更改 '>' 和 '


> 变成 &gt

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

【问题讨论】:

  • 如果你尝试&gt;=大于或等于呢? SELECT bTitle FROM Book WHERE bQuantity &gt;= 9;
  • 什么是 bQuantity 列数据类型?
  • 该查询在语法上是有效的。将其完全复制并粘贴到 MySQL 控制台中,它会起作用(假设存在正确的表和列等)。我们没有看到的事情正在这里发生……
  • 做。不是。 HTML转义。这。询问!你为什么要这样做?
  • @deceze♦ @DhruvSaxena2 谢谢你们,没有 htmlentities() 也能正常工作。我是 html 和 php 的新手,对 htmlentities 的工作方式没有正确的理解,但我知道一开始就在那里是错误的。

标签: php html mysqli c9.io


【解决方案1】:

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

【讨论】:

  • 我编辑了我的帖子,但我使用的是 htmlentities(),当我回显我的查询时,它会正确回显,所以似乎是其他原因造成的
  • 所以你不应该。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-15
  • 1970-01-01
  • 1970-01-01
  • 2020-08-29
  • 2020-08-25
  • 2016-01-22
  • 1970-01-01
相关资源
最近更新 更多