1)启用 devel 模块 看sql 语句 一个个的仔细看
2)迟到的答案,但你可以经常转
$result = db_query($query, $arg1, $arg2);
快进了
echo sprintf($query, $arg1, $arg2);
exit;
drupal_set_message(sprintf($query, $arg1, $arg2), "status");
D7版与devel。
> = PHP 5.4
dpm(str_replace(['{', '}'], '', dpq($query, TRUE)));
<PHP 5.4
dpm(str_replace(array('{', '}'), '', dpq($query, TRUE)));
| 如果您有D7但没有Devel手,下面的代码段可能会有用 - 它可能不会处理每种类型的占位符,但它现在错误地假定所有的占位符都是字符串(这对我的使用来说很好)。
function stringify_query( $query ){
$s = preg_replace('/\}|\{/', '', $query->__toString());
$a = $query->arguments();
foreach ( $a as $key => $val ) {
$a[$key] = '\'' . $val . '\'';
}
return strtr($s, $a);
}
|
我不认为是这样。但是,如果您只是为了调试目的,可以打开devel模块,这将显示您运行的查询。
其实你可以将变量'dev_query'设置为1,然后访问全局数组$ queries,但我不会推荐它。
来自 http://stackoverflow.com/questions/3137500/drupal-return-sql-string-from-db-query
| 我不认为是这样。但是,如果您只是为了调试目的,可以打开devel模块,这将显示您运行的查询。 其实你可以将变量'dev_query'设置为1,然后访问全局数组$ queries,但我不会推荐它。 |
/* 下面是 d7 的 sql 语句调试
//下面是调试的 语句. ,进行几个数组(db_query后面的参数数组)键值对的替换 ,
//在数组值的外面加上 单引号 ' ,,目的是为了sql中不报错
/*
$sql ="select u.uid as uid, u.name as name,d.field_diqu_value as diqu,n.field_full_name_value as full_name, u.mail as mail from users u
inner join field_data_field_full_name n on u.uid=n.entity_id
inner join field_data_field_diqu d on u.uid=d.entity_id
where n.entity_type='user' and n.bundle='user'
and d.entity_type='user' and d.bundle='user'
and ( u.name like :name or n.field_full_name_value like :full_name or u.mail like :mail ) ";
$sql = str_replace(':name', "'".'%' . db_like($name) . '%'."'" ,$sql);
$sql = str_replace(':full_name', "'".'%' . db_like($full_name) . '%'."'" ,$sql);
$sql = str_replace(':mail', "'".'%' . db_like($mail) . '%'."'" ,$sql);
echo $sql;
*/
// 下面是真正执行的 sql 语句
$results_db = db_query("select u.uid as uid, u.name as name,d.field_diqu_value as diqu,n.field_full_name_value as full_name, u.mail as mail from users u
inner join field_data_field_full_name n on u.uid=n.entity_id
inner join field_data_field_diqu d on u.uid=d.entity_id
where n.entity_type='user' and n.bundle='user'
and d.entity_type='user' and d.bundle='user'
and ( u.name like :name or n.field_full_name_value like :full_name or u.mail like :mail ) ",
array(':name' => '%' . db_like($name) . '%',':full_name' => '%' . db_like($full_name) . '%',':mail' => '%' . db_like($mail) . '%'))->fetchAll();