【问题标题】:MSSQL and PHP Advanced Search Engine not Querying ProperlyMSSQL 和 PHP 高级搜索引擎无法正确查询
【发布时间】:2014-03-05 21:19:14
【问题描述】:

我的 MSSQL 表 products 有一个高级但简单的 PHP 搜索引擎。搜索引擎具有三个文本输入。第一个输入用于表格的make 列,第二个输入用于表格的product_name 列,最后一个输入用于表格中我的material 列。据我所知,我的问题是,当我将两个输入留空并输入valve 时,查询应该回显SELECT * FROM products WHERE 1=1 AND product_name = 'valve'。相反,查询回显SELECT * FROM products WHERE 1=1。我不知道为什么会这样,我想我可以用另一双眼睛来解决这个问题。

这里是完整的 PHP 代码:

<form action="<?php $_PHP_SELF ?>" method="post">
      <input type="text"   name="make">
      <input type="text"   name="parttype">
      <input type="text"   name="material">
      <input type="submit" name="submit">
</form>

<?php
$conn = mssql_connect('gdm','ger','Rr1!');
mssql_select_db('Ggler',$conn);

if (isset($_POST['submit'])) {

$cheack = "";

if(isset($_GET["make"])&&$_GET["make"] != ""){
    $make = $_POST['make'];
    $cheack.="  AND make =  '$make' ";
}

if(isset($_GET["parttype"])&&$_GET["parttype"] != ""){
    $parttype = $_POST['parttype'];
    $cheack.="  AND product_name =  '$parttype' ";
}

if(isset($_GET["material"])&&$_GET["material"] != ""){
    $material = $_POST['material'];
    $cheack.="  AND material =  '$material' ";
}

   $DB = "SELECT * FROM products WHERE 1=1 ".$cheack;
   $runquery = mssql_query($DB, $conn);
   $dad =  mssql_fetch_assoc($runquery);
   echo "".$DB."";
}else { 
    echo "No search made"; }
?>

感谢您的帮助。非常感谢所有帮助。

【问题讨论】:

  • 检查你的代码... &&$ 应该有空格 && $
  • 显然不行,因为没有空间它仍然可以工作。
  • 甚至没有注意到 @Marc B 指出的 post/get 问题...不过我还是会离开这个空间

标签: php sql sql-server forms search


【解决方案1】:

发现问题:

<form action="<?php $_PHP_SELF ?>" method="post">
                                           ^^^^^

if(isset($_GET["make"])&&$_GET["make"] != ""){
          ^^^^            ^^^^

同样,您也容易受到SQL injection attacks 的攻击。

【讨论】:

    猜你喜欢
    • 2017-03-24
    • 2020-10-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-07
    • 2018-10-21
    • 2015-06-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多