PHP / Mysql - 如何显示查询字符串中的内容?

时间:2014-12-08 09:54:42

标签: php mysql sql

我的查询有问题。当我var_dump我的查询时,它会显示bool(false)

如何显示完整的查询文字?

PHP:

public function query($string, array $params = array()) {
        $this->count++;
        return mysql_query_params($string, $params);
}
public function updateArticle($article) {
        $rv = $this->db->query("UPDATE ats_Articles SET " .
            "art_CategoryID=$2, art_Title='$3', art_ShortText='$4', art_LongText='$5', art_Ln2BR=$6, art_Language='$7', " . 
            "art_DisplayCountry='$8', art_DateIn=$9, art_DateOut=$10, art_LinkedArt='$11', art_Download='$12', art_Icon='$13', " . 
            "art_IconLarge='$14', art_IconDesc='$15', art_Priority=$16, art_Location='$17', art_Keywords='$18', art_Desc='$19' " .
            "WHERE art_ID=$1;",
            array($article->art_ID, $article->art_CategoryID, $article->art_Title, $article->art_ShortText,
                  $article->art_LongText, $article->art_Ln2BR, $article->art_Language, $article->art_DisplayCountry,
                  $article->art_DateIn, $article->art_DateOut, $article->art_LinkedArt, $article-> art_Download,
                  $article->art_Icon, $article->art_IconLarge, $article->art_IconDesc, $article->art_Priority, $article->art_Location, $article->art_Keywords, $article->art_Desc));
        if ($rv === false ) {
            var_dump($rv); // bool(false)
            return false;
        } else {
            return true;
        }
    }

2 个答案:

答案 0 :(得分:1)

如果您使用的是codeigniter,那么$this->db->last_query();可以帮助您。

答案 1 :(得分:0)

我很确定这个函数mysql_query_params的实现如下,我刚刚添加了第四个参数(可选)进行调试

 mysql_query_params( $query, $parameters=array(), $database=false, $debug = false )
查询函数中的

只需调用第四个参数

public function query($string, array $params = array()) {
    $this->count++;
    return mysql_query_params($string, $params, false, true); // the forth is true for debugging
}

当您将第四个参数设置为true时,该函数将返回包含查询的字符串。

这是你的功能修改

function mysql_query_params__callback( $at ) {
        global $mysql_query_params__parameters;
        return $mysql_query_params__parameters[ $at[1]-1 ];
}
function mysql_query_params( $query, $parameters=array(), $database=false, $debug = false ) {
        // Escape parameters as required & build parameters for callback function
        global $mysql_query_params__parameters;
        foreach( $parameters as $k=>$v )
                $parameters[$k] = ( is_int( $v ) ? $v : ( NULL===$v ? 'NULL' : "'".mysql_real_escape_string( $v )."'" ) );
        $mysql_query_params__parameters = $parameters;

        $query = preg_replace_callback( '/\$([0-9]+)/', 'mysql_query_params__callback', $query);

        if($debug){
            return $query;
        }
        // Call using mysql_query
        if( false===$database )
                return mysql_query( $query );
        else    return mysql_query( $query , $database);
}