【问题标题】:my select query works in phpmyadmin but not in my code我的选择查询在 phpmyadmin 中有效,但在我的代码中无效
【发布时间】:2018-02-22 01:41:32
【问题描述】:

我的 sql 选择查询在 phpmyadmin 中有效,但在我的 php 代码中无效。这是我的代码。请帮助我找到解决方案。提前感谢您的帮助

    $conn=mysqli_connect("localhost","root","");
    if(!$conn) {
        die(mysqli_error());
    }
    $db=mysqli_select_db($conn,"dbname");
    if(!$db) {
        die(mysqli_error());
    }
    $to_date=$_REQUEST['to_date'];
    $r_date=$_REQUEST['date'];
    $role=$_REQUEST['role'];
    $user_name=$_REQUEST['user'];
    if($_REQUEST['role']='all'||$_REQUEST['role']="") {
        $sql="SELECT * 
                FROM `daily_log` 
                WHERE date BETWEEN '$r_date'AND '$to_date'  
                AND category='Activity'";
    }else{
        $sql="SELECT * 
                FROM `daily_log` 
                WHERE category='Activity' 
                AND assigned_to = '$user_name' 
                AND date BETWEEN '$r_date' AND '$to_date'";
        echo $sql;
    }
    $exe=mysqli_query($conn,$sql);         
    $i=1;
    while($row=mysqli_fetch_array($exe)) {
        ...table rows..
    }

【问题讨论】:

  • $_REQUEST['role']='all'||$_REQUEST['role']="" 这些是分配,而不是比较。
  • 您已经在使用支持 prepared statements 的 API 和有界变量输入,您应该使用带占位符的参数化查询(prepared statements)来保护您的数据库免受SQL-injection !开始使用 mysqli::prepare() 和 mysqli_stmt::bind_param()。
  • 您应该自己进行调试并发布相关的错误消息。使用mysqli_error() 从 MySQL 获取任何错误,并使用 error_reporting(E_ALL); ini_set('display_errors', 1); 查找任何 PHP 错误。
  • 一些合理的代码缩进是个好主意。它可以帮助我们阅读代码,更重要的是,它将帮助 您调试代码 Take a quick look at a coding standard 为您自己谋福利。您可能会被要求在几周/几个月内修改此代码,最后您会感谢我的。
  • 哪个查询不起作用?

标签: php mysqli phpmyadmin


【解决方案1】:

您的第一个查询在'$r_date'AND 附近有语法问题 在'$r_date' 和AND 之间放置一个空格

最后查询将是:

$sql="SELECT *  
        FROM `daily_log` 
        WHERE date BETWEEN '$r_date 'AND '$to_date'  
        AND category='Activity'";

您应该在问题中包含 mysql 错误信息。

也修复这个if($_REQUEST['role']='all'||$_REQUEST['role']="") {。您正在为 $_REQUEST['role'] 赋值而不是比较。

【讨论】:

  • 感谢大家的建议和大力帮助。它奏效了。分配运算符是问题..!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-27
  • 2013-04-03
  • 1970-01-01
  • 2019-02-06
  • 2014-10-31
  • 1970-01-01
相关资源
最近更新 更多