【问题标题】:Unknown PHP PDO Error When Adding FROM_UNIXTIME to WHERE clause将 FROM_UNIXTIME 添加到 WHERE 子句时出现未知的 PHP PDO 错误
【发布时间】:2014-11-26 08:04:52
【问题描述】:

我有这段代码,但我不确定它为什么不起作用。显然它没有捕获任何异常,我尝试调试并发现它在我添加的点处中断:

WHERE MONTH(FROM_UNIXTIME(unixtime))='7'

因为当我删除它时,一切似乎都正常。

<?php
try {
  $dbh = new PDO('mysql:host=localhost;dbname=myDb', 'root', 'password');
  $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

  $stmt = $dbh->prepare('SELECT col1, count(*) as frequency FROM myTable WHERE MONTH(FROM_UNIXTIME(unixtime))='7' GROUP BY col1 ORDER BY frequency DESC');
  $stmt->execute();

  // populate results
  $results = array();
  foreach ($stmt->fetchAll(PDO::FETCH_ASSOC) as $row) {
    $row_array['col1'] = $row['col1'];
    $row_array['frequency'] = $row['frequency'];

    array_push($results,$row_array);      
  }

  // and return to typeahead
  echo json_encode($results);           


  $dbh = null;
} catch (PDOException $e) {
  print "Error!: " . $e->getMessage() . "<br/>";
  die();    
}
?>

如果需要编辑或配置任何 php.ini 或其他服务器配置,请告诉我。

谢谢!

【问题讨论】:

  • 从命令行运行此查询会发生什么?
  • 当我对 myadmin.php 进行查询时,它工作得很好。我想知道为什么我的 qn 也被否决了,所以下次我可以更好地格式化我的问题。

标签: php mysql pdo ubuntu-14.04 php-ini


【解决方案1】:

您的报价有问题。这样做

$stmt = $dbh->prepare("SELECT col1, count(*) as frequency 
 FROM myTable 
   WHERE MONTH(FROM_UNIXTIME(unixtime))='7' GROUP BY col1 ORDER BY frequency DESC");

【讨论】:

  • 我现在收到此错误Error!: SQLSTATE[42S22]: Column not found: 1054 Unknown column 'unixtime' in 'where clause'
  • 非常感谢。我的错。我忘记将其编辑为正确的列名。
【解决方案2】:

将双引号中的 SQL 语句周围的单引号更改为双引号。 7 周围的单引号会导致您的问题。单引号内的单引号。

【讨论】:

    猜你喜欢
    • 2014-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-03
    • 2012-04-25
    • 2015-09-11
    相关资源
    最近更新 更多