【发布时间】:2010-09-05 13:57:23
【问题描述】:
为什么某些在 mysql 中有效的查询不适用于 db_query?比如——
" SELECT * FROM {tb1},{tb2}WHERE {tb1}.vid=%d " (当然我在mysql环境中测试时用实际的vid值替换%d)
“从 {tb1} 内连接 {tb2} 中选择 f1,f2,...,f10 在 {tb1}.vid = {tb2}.vid WHERE {tb1}.vid = %d AND {tb2}.vid = %d
虽然我在 mysql 环境中为这两个语句返回了 1 条记录,但 db_query 根本没有返回任何内容。知道我犯了什么错误吗?值得一提的是,我使用的是 IIS 7.5、Mysql 5.5、php 5.2.12 ****UPDATE**** db_query/db_fetch_object 工作得很好。只是 hook_view 没有被调用。因此,结果是不显示任何数据。给您添麻烦了。
更新
function mymodule_load($node){
$query = 'SELECT f1,f2,...,f10 FROM {tb1} INNER JOIN {tb2} ON {tb1}.vid = {tb2}.vid WHERE {tb1}.vid = %d AND {tb2}.vid = %d';
$result = db_query($query,$node->vid);//If I use db_query($query,$node->vid,$node->vid), drupal doesn't invoke hook_view
drupal_set_message($node->vid,"status"); //for testing purpose
return db_fetch_object($result);
}
function mymodule_view($node, $teaser = FALSE, $page = FALSE){
$node = node_prepare($node, $teaser); // get it ready for display
$f1 = check_markup($node->f1);
..............
$f10 = check_markup($node->f10);
// Add theme stuff here
$node->content['mycontent'] = array(
'#value' => theme('defaultskin', $f1,...,$f10),
'#weight' => 1,
);
return $node;
}
function mymodule_theme(){
return array(
'defaultskin' => array(
'template' => 'node-defaultskin',
'arguments' => array(
'f1' => NULL,
......
'f10' => NULL,
),
),
);
}
【问题讨论】: