【问题标题】:SQL query returns row via phpMyAdmin but not on web siteSQL查询通过phpMyAdmin返回行但不在网站上
【发布时间】:2013-03-02 00:01:38
【问题描述】:

我遇到了一个奇怪的问题,当我在我的网站上运行它时,我的查询没有返回任何内容,但是当我在 phpMyAdmin 中运行它时它返回 1 行。

$query = $this->db->query("SELECT post_date, post_id, ref_user_id FROM forum_posts WHERE post_id = (SELECT MAX(post_id) FROM forum_posts WHERE ref_post_id = $row->ref_post_id AND NOT deleted = 1 LIMIT 1) LIMIT 1");

echo $this->db->last_query().'<br>';
echo $query->num_rows();

num_rows() 给我 0。我复制 last_query() 给我的代码行并将其粘贴到 phpMyAdmin 中,它返回 1 行。

任何想法为什么我不在我的网站上工作?

谢谢!

【问题讨论】:

  • 您应该检查您的数据库连接设置。可能是你连接到了错误的数据库。
  • @stigok 不,之前执行的其他查询工作正常。
  • 你确定你的 SQL 字符串中的变量正在评估你的结果吗?试试print_r("SELECT post_date, post_id, ref_user_id FROM forum_posts WHERE post_id = (SELECT MAX(post_id) FROM forum_posts WHERE ref_post_id = $row-&gt;ref_post_id AND NOT deleted = 1 LIMIT 1) LIMIT 1") 看看会发生什么......
  • @prodigitalson 得到和last_query()一样的东西
  • 不得不问,如果有 2 个以上的环境,它们是否都在以适当的权限查看同一个数据库?

标签: php sql codeigniter


【解决方案1】:

您需要对查询中的字符串进行转义以引用 PHP 变量:

$query = $this->db->query("SELECT post_date, post_id, ref_user_id FROM forum_posts 
         WHERE post_id = (SELECT MAX(post_id) 
                         FROM forum_posts WHERE ref_post_id = " . $row->ref_post_id . " AND NOT deleted = 1 LIMIT 1) LIMIT 1");

【讨论】:

  • 不完全正确。这里最有可能需要的是调用周围的大括号。 {$row-&gt;ref_post_id}
  • 这也可以。两者之一需要发生,因为他只是将他的变量直接放在查询中。
猜你喜欢
  • 2021-12-02
  • 2020-04-18
  • 1970-01-01
  • 2015-05-28
  • 1970-01-01
  • 2010-11-24
  • 2013-07-03
  • 2017-02-18
  • 1970-01-01
相关资源
最近更新 更多