2017-09-13 96 views
-2

我的sql select查询在phpmyadmin中可用,但不能在我的php代码中工作。这里是我的代码。请帮助我找到解决方案。谢谢您的帮助我的select查询在phpmyadmin中可用,但不在我的代码中

$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.. 
    } 
+1

'$ _REQUEST ['role'] ='all'|| $ _REQUEST ['role'] =“”'这些是*赋值*,不是比较。 – Qirel

+1

您已经在使用支持**准备语句的API,并且使用了有界变量输入,您应该利用带占位符(准备语句)的参数化查询来保护数据库免受[SQL注入](http://stackoverflow.com/q/60174 /)! 开始使用['mysqli :: prepare()'](http://php.net/mysqli.prepare)和['mysqli_stmt :: bind_param()'](http://php.net/mysqli-stmt .bind-PARAM)。 – Qirel

+0

您需要进行自己的调试并发布相关的错误消息。使用['mysqli_error()'](http://php.net/manual/en/mysqli.error.php)从MySQL获取任何错误,并使用'error_reporting(E_ALL); ini_set('display_errors',1);'找到任何PHP错误。 – Qirel

回答

0

你的第一个查询有近'$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']而不是比较。

+0

谢谢大家的建议和很大的帮助。它的工作。assingnment运营商是问题..! – Don

相关问题