2017-09-13 58 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

相關問題