【问题标题】:MySQL #1054 - Unknown columnMySQL #1054 - 未知列
【发布时间】:2025-12-23 14:40:05
【问题描述】:

我想执行这个 SQL 查询:

SELECT * FROM  `wcf1_user` WHERE  `lastActivityTime` < 1343642175

但我收到此错误:

#1054 - Unknown column '1343642175' in 'where clause'

但这完全没有意义。 1343642175 不是我的专栏,是 lastActivityTime。

我在 phpMyAdmin 中这样尝试过: phpmyadmin

错误是一样的。

有什么想法吗?

这是我的完整代码:

$date = strtotime("-1 month");
$db = & JDatabase::getInstance( $option );
$query = $db->getQuery(true);
$query ->select('userID, username, email, lastActivityTime')
       ->from('wcf1_user')
       ->where('lastActivityTime < '.(int) $date);
$db->setQuery($query);
$result=$db->loadObjectList();

注意:这是在 joomla 组件中制作的

编辑:

现在它工作正常,我没有对我的代码做任何事情。我刚刚重新启动了我的计算机。 我不知道是什么导致了这个错误,但现在它消失了。

【问题讨论】:

  • lastActivityTime 是整数类型?
  • 你能发布你的表结构和一些示例数据吗?
  • lastActivityTime 是 int(10)
  • 很酷,它现在可以工作了,但你可以检查你的报价。您要确保执行正确的引用,因此请尝试: $query->where($db->quotename('lastActivityTime') . ' dump() 以查看生成的查询。

标签: mysql joomla mysql-error-1054


【解决方案1】:

您使用的号码不是数字。它包含奇怪的字符。 尝试手动输入数字。

【讨论】:

    【解决方案2】:

    您的查询运行良好,也许您提供的代码不完整。

    DEMO HERE

    编辑。

       $date=strtotime("-1 month");
       $db = & JDatabase::getInstance( $option );
       $query = $db->getQuery(true); 
       $query ->select('userID, username, email, lastActivityTime');
       $query->from('wcf1_user');
       $query->where('lastActivityTime < '.(int) $date); 
       $db->setQuery($query);
       $result=$db->loadObjectList();
    

    【讨论】:

    • 这是我的完整代码: [code]$date=strtotime("-1 month");$db = & JDatabase::getInstance( $option ); $query = $db->getQuery(true); $query ->select('userID, username, email, lastActivityTime'); ->从('wcf1_user'); ->where('lastActivityTime setQuery($query);$result=$db->loadObjectList();[code]
    • 在你的代码中你缺少 $query ;看看我更新的答案
    • 哦,对不起。一些 cmets 已在我的代码中,我删除了它们以使我的代码清楚地用于该线程。我必须在删除 cmets 时删除了 $query
    • 但我的代码不能错。我在 phpmyadmin 中输入了它,它也没有工作。
    • 尝试删除(int) $date(int)$date之间的空格
    【解决方案3】:

    尝试使用以下方法:

    $date = strtotime("-1 month");
    $db = JDatabase::getDBO();
    $query = $db->getQuery(true);
    $query ->select('userID, username, email, lastActivityTime')
           ->from('#__user')
           ->where('lastActivityTime < '.(int) $date);
    $db->setQuery($query);
    $result=$db->loadObjectList();
    

    在 Joomla 中,表格有一个全局前缀 #__

    希望对你有帮助

    【讨论】:

    • 我不访问 joomla-db。在 $option 中,有其他数据库的数据,这在其他地方也可以正常工作。
    • 您是将此查询放在 Joomla 文件还是外部文件中?如果是外部的,您是在导入 Joomla 数据库吗?
    • 我在 joomla 组件中使用这个,它被 joomla 使用。