-1

I have a problem with my query. When I var_dump my query it says bool(false).

How can I display the full query text?

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;
        }
    }
Rob Baillie
  • 3,436
  • 2
  • 20
  • 34
user3105439
  • 75
  • 1
  • 9

2 Answers2

1

If you are using codeigniter then $this->db->last_query(); can help you definitely.

Vijay Verma
  • 3,660
  • 2
  • 19
  • 27
0

I am pretty sure that the implementation of this function mysql_query_params is as follows, i just added a forth parameter (optional) for debugging

 mysql_query_params( $query, $parameters=array(), $database=false, $debug = false )

in your query function just call the forth parameter

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

when you set the forth parameter to true the function will return string containing the query.

this is your function modified

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);
}
Hmmm
  • 1,774
  • 2
  • 13
  • 23