如何在执行后立即打印已执行的SQL

时间:2013-08-16 作者:Ravi Soni

我正在寻找一种方法,可以在以下命令之后打印执行的sql查询:

$wpdb->query(
                $wpdb->prepare("INSERT 
                                INTO tbl_watchprosite SET 
                                keywords=%s,url_to_post=%s,description=%s,
                                date_captured=%s,crawl_id=%d,
                                image_main=%s,images=%s,brand=%s,
                                series=%s,model=%s,condition=%s,box=%s,
                                papers=%s,year=%s,case_size=%s,status=%s,listed=%s,
                                asking_price=%s,retail_price=%s,payment_info=%s,forum_id=%d",
                                $this->getForumSettings()->search_meta,$element->href,$post_meta[\'description\'],current_time(\'mysql\'),$cid,$post_meta[\'image_main\'],$images,$post_meta[0],$post_meta[1],$post_meta[2],$post_meta[3],$post_meta[4],$post_meta[5],$post_meta[6],$post_meta[7],$status,$post_meta[9],$post_meta[10],$post_meta[11],$this->getForumSettings()->ID)
            );
如果我能看到查询中的值,那就太好了。

谢谢

4 个回复
最合适的回答,由SO网友:kaiser 整理而成

这个$wpdb 对象具有为此设置的某些属性:

global $wpdb;

// Print last SQL query string
echo $wpdb->last_query;

// Print last SQL query result
echo $wpdb->last_result;

// Print last SQL query Error
echo $wpdb->last_error;
注意:首先您必须设置define( \'SAVEQUERIES\', true ); 在您的wp-config.php WordPress根文件夹中的文件。

SO网友:Kumar

我在这里列出了3种方法:

使用SAVEQUERIES 并使用打印页脚中的所有查询$wpdb->last_query 要仅打印执行的最新查询,这对于调试函数很有用您需要将此添加到wp配置中。php

 define(\'SAVEQUERIES\', true);
然后在主题的页脚中添加以下代码:

 <?php
  if (current_user_can(\'administrator\')){
   global $wpdb;
   echo "<pre>Query List:";
   print_r($wpdb->queries);
   echo "</pre>";
 }//Lists all the queries executed on your page
?>
或者,如果只想打印最后执行的查询,可以在$wpdb 查询函数调用。

global $wpdb;
echo $wpdb->last_query;//lists only single query
第三种方法是使用类似插件的查询监视器,该监视器详细列出了页面上执行的所有查询,以及与之相关的其他详细信息,如返回的行数和执行所需的时间,或者是慢速查询。http://wordpress.org/plugins/query-monitor/

只在开发环境中使用此插件是个好主意,不应该在活动站点上保持激活状态。此外,查询监视器有时会导致页面出现问题,例如,如果错误太多,模板/页面上会出现5XX错误。

SO网友:Ketan Chaudhari

您必须同时添加这两个函数,否则它将永远不会显示错误

$wpdb->show_errors(); 
$wpdb->print_error();
此函数将显示如下正确错误

enter image description here

SO网友:KestutisIT

我想补充一点,@kaiser的最佳投票结果并不完全正确:

// Print last SQL query string
$wpdb->last_query
它的回归是ARRAY, 不是字符串。因此,要输出最后一个查询,您应该执行以下操作:

echo \'Last query: \'.var_export($wpdb->last_query, TRUE);

结束

相关推荐

Wpdb get_var没有返回任何结果(经过验证的MySQL查询只返回一个值)

我正在尝试修改wordpress插件,使其更适合我们的需要。我有一个自定义的user\\u meta,名为practice,我们根据实践来分隔用户,因此我们还需要根据实践来分隔测验结果。我的问题是,我无法让我的查询返回实践。有人能看看这个告诉我我做错了什么吗? function save_score( $json, $user_id = null, $practice = null ) { global $wpdb, $data; $d