我的查询有问题。当我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;
}
}
答案 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);
}