2015-11-06 62 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(); 
     } 
相关问题