2015-11-06 103 views
1

工作,我得到這個代碼:查詢在phpMyAdmin,但不是在庫MySQLi

$qstring = "SELECT COUNT(*) as count,name FROM schedules WHERE position = 'test' GROUP BY name ORDER BY count DESC"; 
     if ($result = $mysqli->prepare($qstring)) { 

      /* execute query */ 
      $result->execute(); 

      /* bind result variables */ 
      $result->bind_result($count,$name); 
      /* fetch value */ 
      $result->fetch(); 

      printf($count, $name); 

      /* close statement */ 
      $result->close(); 
     } 

上面的查詢工作時,通過phpmyadmin運行,但它不返回任何東西(也沒有拋出任何錯誤)使用上面的代碼運行時。我試過使用非預處理語句,但是我得到了相同的空結果。所有函數都返回true,所以沒有發生錯誤。

回答

0

在準備好的語句中,您不會將值放入查詢中,而是稍後將其綁定。

在PHP中,查詢更改爲:

SELECT COUNT(*) as count,name FROM schedules WHERE position = ? GROUP BY name ORDER BY count DESC"; 

然後下面if ($result = $mysqli->prepare($qstring)) {地址:

$result->bind_param('s', $var); 
$var = 'test'; 
+0

感謝您的答案,但它沒有幫助。 printf仍然不打印任何東西。 – m33ts4k0z

+0

我不確定printf是否適合在此使用。什麼是預期的輸出?你可以嘗試:'echo $ count;'和'echo $ name;'? – jrose

+0

也可以嘗試在PHP文件的頂部添加'mysqli_report(MYSQLI_REPORT_ERROR);'來查看是否有任何MySQL錯誤發生。這可能有助於查明問題。 – jrose

0

繼喬·羅斯的答覆,我提出他建議的修改,但是這是不夠的。

我的初始代碼有一個雙重問題。主要問題是php文件編碼。由於我使用硬編碼字符串進行測試,因此我忘記將文件編碼更改爲UTF-8,並且由於我在字符串中使用了瑞典語特殊字符,導致未處理的崩潰,從而導致空的結果。更改編碼並重新保存php文件解決了問題。

另外我上面的代碼不會返回預期的結果。這是我的最終代碼是正常工作,並且正在返回預期結果:

$qstring = "SELECT COUNT(*) as count,name FROM schedules WHERE position = ? GROUP BY name ORDER BY count DESC"; 
     if ($result = $mysqli->prepare($qstring)) { 

      $var = 'test'; 
      $result->bind_param('s', $var); 

      /* execute query */ 
      $result->execute(); 

      $result = $result->get_result(); 
      /* fetch value */ 
      while ($row = $result->fetch_assoc()) 
      { 
       echo $row['count'] ," ", $row['name'],"<br>"; 
      } 

      /* close statement */ 
      $result->close(); 
     } 
相關問題