Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP、MYSQLi查询结果无法使用WHERE using$\u GET_Php_Sql_Mysqli_Global Variables - Fatal编程技术网

PHP、MYSQLi查询结果无法使用WHERE using$\u GET

PHP、MYSQLi查询结果无法使用WHERE using$\u GET,php,sql,mysqli,global-variables,Php,Sql,Mysqli,Global Variables,我正在尝试使用WHERE获取SQL查询的结果,每当我使用$get变量时,它都不起作用,现在我已经回显了$query变量,它显示了$get['idced']的值,但由于某种原因,它不执行查询,因此循环不显示任何内容 但是当我手动输入要比较的值时,它工作得非常好。。。任何帮助都将不胜感激。。我也知道他们使用GET可能会有一些安全问题,但这是一个本地应用程序,所以不需要担心。。heere是我的代码: <?php $mysqli = new mysqli("localhos

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

但是当我手动输入要比较的值时,它工作得非常好。。。任何帮助都将不胜感激。。我也知道他们使用GET可能会有一些安全问题,但这是一个本地应用程序,所以不需要担心。。heere是我的代码:

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

有时它不是那样工作的。。尝试更改为:

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

它不起作用,因为您从url获得的idced是一个字符串,您应该使用单引号从sql查询中保留字符串。否则,mysql就像将变量作为表名

试一试


您使用的是MySQLi,所以停止转义输入和直接注入查询,开始使用带有绑定变量的准备语句。。。。如果需要转义值,那么它们是字符串,应该在查询中引用。。。。在查询中使用绑定变量可以为您完成所有这些操作,删除尾部的
来自查询库的建议,但是没有任何效果,还有其他想法吗?已经在评论1中提到过-有点。。。如果idced列包含一个字符串,您可以在$idced_history被“字符”包围的情况下尝试此操作$query=“从应用程序中选择*,其中idced=”$idced\u history';
"SELECT * FROM applications WHERE idced = '$idced_history'";