PHP,MYSQLi查询结果不使用WHERE使用$ _GET

时间:2014-09-18 10:39:22

标签: php sql mysqli global-variables

我试图使用WHERE获取SQL查询的结果,每当我使用$ _GET变量时它都不起作用,现在我已经回显了$ query变量,它显示了$ _GET ['idced'的值]但由于某种原因,它不执行查询,因此循环不显示任何内容。

但是当我手动输入我要比较的值时,它完全正常...任何帮助都将非常感激..我也知道他们可能是使用GET但它的本地应用程序的一些安全问题所以这不是一个问题..这是我的代码:

 <?php

          $mysqli = new mysqli("localhost", "cx", "", "cxtrack");

          /* check connection */
          if ($mysqli->connect_errno) {
            printf("Connect failed: %s\n", $mysqli->connect_error);
            exit();
            } 


          $idced_history = mysqli_real_escape_string($mysqli, $_GET['idced']);

          //This is the query that is not working:
          $query = "SELECT * FROM applications WHERE idced = $idced_history;";


        if ($result = $mysqli->query($query)) {

         //This loop works fine when I replace $idced_history with a value of idced
         while ($row = $result->fetch_assoc()) {

            $curenttime=$row["applicationposition"];
            $time_ago =strtotime($curenttime);

           echo "<div style='background:red; position:relative; top:2.6em; margin-bottom:1%;'>";
           echo "<a href='#'>".$row["applicationposition"]."</a><br/>";
           echo "Applied On: ".$row["applicationdate"]." ( ". timeAgo($time_ago) ." ) <br>";
           echo "Via: ".$row["applicationtype"]."</div>";
           }

         $result->free();
       }

          $mysqli->close();
                ?>

2 个答案:

答案 0 :(得分:1)

有时它不会那样工作..尝试改为:

$query = "SELECT * FROM applications WHERE idced = ".$idced_history;

答案 1 :(得分:1)

它不起作用,因为你从url获取的是一个字符串,你应该使用单引号从sql查询中备用字符串。否则,mysql就像你的变量一样作为表名。

"SELECT * FROM applications WHERE idced = '$idced_history'";