【问题标题】:mySQL ORDER BY ASC works, DESC does notmySQL ORDER BY ASC 有效,DESC 无效
【发布时间】:2010-05-07 03:39:57
【问题描述】:

我已将 SMF “集成”到 Wordpress 中,方法是在论坛中查询来自特定论坛版块的最新视频列表并将它们显示在 Wordpress 主页上。但是,当我添加 ORDER BY 子句时,查询(我在同一页面的其他部分成功测试)中断了。

添加到组合中,我使用 Auto Embed 插件来允许在主页上播放视频,以及使用 jCarousel 功能来旋转它们。上次人们很友好地帮助我使用正则表达式过滤视频网址,我希望这次也能同样好运!

这是整个函数(去掉 DESC 就可以了……):

function SMF_getRecentVids($limit=10){
global $smf_settingsphp_d;

if(file_exists($smf_settingsphp_d)) include($smf_settingsphp_d);

include "AutoEmbed-1.4/AutoEmbed.class.php";
$AE = new AutoEmbed();
$connect = new wpdb($db_user,$db_passwd,$db_name,$db_server);
$connect->query("SET NAMES 'UTF8'");

$sql = "SELECT m.subject, m.ID_MSG, m.body, m.ID_TOPIC, m.ID_BOARD, t.ID_FIRST_MSG
FROM {$db_prefix}messages AS m
LEFT JOIN {$db_prefix}topics AS t ON (m.ID_TOPIC = t.ID_TOPIC)
WHERE (m.ID_BOARD = 8)
ORDER BY t.ID_FIRST_MSG DESC";

$vids = $connect->get_results($sql);

$c = 0;
$content = "imageCarousel_itemList = [";
foreach ($vids as $vid) {
    if ($c > $limit) continue;
    //extract video code from body
    $input = $vid->body;
    $regexp = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
    if(preg_match_all($regexp, $input, $matches)) { 
        $AE->parseUrl($matches[0][0]);
        $imageURL = $AE->getImageURL();
        $AE->setWidth(290);
        $AE->setHeight(240);            
        $content .= "{url: '".$AE->getEmbedCode()."', title: '".$vid->subject."', caption: '', description: ''},";                      
    }
    $c++;
}
$content .= "]";
echo $content;

$wpdb = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);   

}

【问题讨论】:

  • 查询没有返回任何内容(null?),$vids 为空。

标签: php mysql wordpress sql-order-by


【解决方案1】:
$sql = SELECT

我认为您缺少一个开头的双引号。

【讨论】:

  • 我的错,我复制不正确,虽然我希望它这么简单。
【解决方案2】:

是的,这可能是你的问题,像这样使用

$sql = "SELECT m.subject, m.ID_MSG, m.body, m.ID_TOPIC, m.ID_BOARD, t.ID_FIRST_MSG
FROM {$db_prefix}messages AS m
LEFT JOIN {$db_prefix}topics AS t ON (m.ID_TOPIC = t.ID_TOPIC)
WHERE (m.ID_BOARD = 8)
ORDER BY t.ID_FIRST_MSG DESC";

【讨论】:

    【解决方案3】:

    原来不是查询,而是结果。我没有逃脱撇号。更新了 addlashes() 以解决问题:

    $content .= "{url: '".$AE->getEmbedCode()."', title: '".addslashes($vid->subject)."', caption: '', description: ''}";
    

    去睡觉了。感谢您的快速回复!

    【讨论】:

    • 永远不要假设查询正确执行。始终检查是否发生错误。即使 SQL 命令有效也能正常执行,但数据库可能存在其他问题。 DBMS 服务器可能已经死机、无法访问,或者之前的查询/事务已锁定表并且您的查询超时。
    【解决方案4】:

    要将 SMF 集成到 Wordpress 中,有一个插件可以帮助您做到这一点:WP-Forum

    搜索一个名为 WP-Forum 的插件并从那里安装。

    这里是网站http://www.fahlstad.se 和他们的示例论坛http://www.fahlstad.se/wp-forum/

    有一个小技巧,安装插件后,转到你的 filezilla/文件管理器,浏览到 wp-content/plugins 并将 wpforum 重命名为 wp-forum ,然后启用插件,否则你会得到一个错误提示

    希望对你有帮助

    【讨论】:

    • 谢谢,我会试一试!我一直在修改一个名为 WP & SMF 的插件,它已经过时了。
    • 希望您能将更新提交给原作者 :) 祝您好运!
    猜你喜欢
    • 2019-06-09
    • 1970-01-01
    • 2020-02-19
    • 1970-01-01
    • 2020-03-09
    • 2011-02-22
    • 2012-05-24
    • 2014-02-07
    • 1970-01-01
    相关资源
    最近更新 更多