Php &引用;大于;及;少于;运算符不在查询中工作

Php &引用;大于;及;少于;运算符不在查询中工作,php,mysqli,Php,Mysqli,“相等”和“不相等”运算符在我的搜索查询中非常有效。 但是,“大于”和“小于”操作员不工作 例如,当我键入“SELECT*FROMexpressFormWHEREefPostage!=460”时,我可以得到 ,效果很好 但是,当我键入“SELECT*FROMexpressFormWHEREefPostage时,您正在破坏您的查询,将htmlspecialchars()之类的内容应用于整个内容!这将导致类似于$sql=trim(preg\u replace('/\s+/','$sQuery));$

“相等”和“不相等”运算符在我的搜索查询中非常有效。 但是,“大于”和“小于”操作员不工作

例如,当我键入“SELECT*FROM
expressForm
WHERE
efPostage
!=460”时,我可以得到 ,效果很好


但是,当我键入“SELECT*FROM
expressForm
WHERE
efPostage
时,您正在破坏您的查询,将htmlspecialchars()之类的内容应用于整个内容!这将导致类似于
$sql=trim(preg\u replace('/\s+/','$sQuery));$sql=htmlspecialchars($sql);$sql=mysqli\u real\u escape\u字符串的内容($mysqli,$sql);$sql=stripslashes($sql)
-你只是在到处乱扔转义函数,祈祷你能在不破坏数据的情况下保护自己?!你试图转义用户输入的行为似乎到处都是,在我看来,这很像是散弹枪调试。通常你会使用预先准备好的语句来解决这些问题。PDO和我的sqli支持准备语句“大于”和“小于”运算符在查询中不起作用"…当您将SQL封装在
htmlspecialchars
中时,您期望得到什么?…您正在转换
,您只需要转义您在SQL语句中比较的变量,而不是整个请求。顺便说一句,stripslashes已从PHP中删除,理由是它最终比无用更糟糕,实际上是一个活动的menace.如果您使用的PHP版本仍然有stripslashes,那么我怀疑您可能需要更新。如果我最初需要键入一个查询,如“SELECT*FROM expressForm WHERE efPostage!=460”,我如何才能转义查询中的变量?
$mysqli = mysqli_connect("localhost",  "XXX",  "XXX", "express")
  or die("Error connecting to database: ".mysqli_error($mysqli));

$sql = trim(preg_replace('/\s\s+/', ' ', $sQuery));
$sql = htmlspecialchars($sql);
$sql = mysqli_real_escape_string($mysqli, $sql);
$sql = stripslashes($sql);

$sQueryResults = $mysqli->query($sql);

if(mysqli_num_rows($sQueryResults) > 0) {
     if (strpos($sql, 'FROM `expressForm`') !== false) {
        echo "<h3 class = \"entity\"> expressForm </h3>";
        echo '<table class=\"table table-striped table-bordered table-hover\">';
        echo "<tr><th>efSerialNo</th><th>signedStID</th><th>efOfficeCode</th><th>efDateMailed</th><th>efPostage</th></tr>";
        while($row = mysqli_fetch_array($sQueryResults)) {
            echo "B";
            echo "<tr><td>";
            echo $row['efSerialNo'];
            echo "</td><td>";
            echo $row['signedStID'];
            echo "</td><td>";
            echo $row['efOfficeCode'];
            echo "</td><td>";
            echo $row['efDateMailed'];
            echo "</td><td>";
            echo $row['efPostage'];                                
            echo "</td></tr>";
        }
        echo "</table>";
    }
else {
    echo "No results<br>";
}

$mysqli->close();
$query = "SELECT * FROM table WHERE column = '" 
         . mysqli_real_escape_string ($mysqli, $parameter)
         . "'";
$stmt = $mysqli->prepare ("SELECT * FROM table WHERE column = ?");
$stmt->bind_param ("i", $value); // "i" indicates that this is expected to be an integer.  See documentation for binding other types
$stmt->execute();
$stmt->bind_result($result);
$stmt->fetch();
var_dump ($result);