2012-10-25 35 views
0

我使用PHP中使用下面的代碼從一個MySQL數據庫中的記錄:添加任何DISTINCT或GROUP BY到我的mysql_query導致要返回沒有值

<?php 
    $username=""; 
     $password=""; 
     $database=""; 
     $hostname=""; 

       $con = mysql_connect($hostname, $username, $password); 

     if (!$con){ 
      die('Could not connect: ' . mysql_error()); 
     } 

     mysql_select_db($database, $con); 


    if(isset($_POST['emp'])){ 
     $emp = $_POST['emp']; 
     $result = mysql_query("SELECT * FROM contact_log", $con); 
     echo mysql_num_rows($result); 
     die(); 
     while($row = mysql_fetch_array($result)){ 
      $emp = $row['emp']; 
      echo $emp.'<br>'; 
     } 
     die(); 
    } 

     mysql_close($con); 
?> 

這工作得很好,並返回正確的字段。問題是,如果我改變了查詢

$result = mysql_query("SELECT DISTINCT * FROM contact_log", $con); 

$result = mysql_query("SELECT * FROM contact_log GROUP BY emp", $con); 

不返回任何結果。

mysql_num_rows甚至沒有返回一個值,表明這些行破壞我的代碼,但我無法弄清楚。

+0

由於我們沒有您的表格模式(您應該發佈它),如果您使用您最喜愛的客戶端在服務器上發出查詢,您會得到什麼? – Cascader

+1

如果'mysql_num_rows'失敗,則表示您在'mysql_query'中出錯。你爲什麼不檢查那裏的錯誤? 'mysql_error()'返回什麼? – Barmar

+0

順便說一句,這裏是強制性的「不要使用mysql_XXX」函數,你應該使用mysqli或PDO。「 – Barmar

回答

0

我懷疑你想對你的第一個查詢做一個distinct *。看你的代碼,你可能想:

"SELECT DISTINCT emp FROM contact_log" 

,你可以得到什麼用mysql_error錯誤去的更多信息:

mysql_query("select * from table") or die(mysql_error()) 

最後,你確定$_POST['emp']正在發送?如果要確認,請在後面加上回應。只是你知道,你並沒有使用emp POST變量來輸入代碼塊以外的標誌。 $emp = $_POST['emp'];沒有做任何事情。

+0

」SELECT DISTINCT emp FROM contact_log「產生相同的結果 使用你的方法我能夠確定: 無法創建/寫入文件'C:\ Windows \ SERVIC〜2 \ NETWOR〜1 \ AppData \ Local \ Temp \#sql44c_1d2a_0.MYI'(Errcode:13) – WyldStallyns

+0

我不知道爲什麼你不得不寫這個文件來做一個簡單的選擇,你可以在phpmyadmin或其他mysql客戶端執行相同的查詢嗎? – Landon

+0

我得到同樣的錯誤在phpmyadmin。我從來沒有設置該目錄,所以它必須是一個默認的地方。有什麼地方我可以改變? – WyldStallyns