为什么某些在mysql中有效的查询不能与db_query一起使用?例如 -
“SELECT * FROM {tb1},{tb2} WHERE {tb1} .vid =%d”(当然我在mysql环境中测试时用%d代替实际的vid值)
“SELECT f1,f2,...,f10 FROM {tb1} INNER JOIN {tb2} ON {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,
),
),
);
}
答案 0 :(得分:1)
你试过......
db_query(“SELECT f1,f2,...,f10 FROM {tb1} tb1
INNER JOIN {tb2} tb2 ON tb1.vid = tb2.vid
在哪里tb1.vid =%d AND tb2.vid =%d“,$ vid,$ vid);
答案 1 :(得分:0)
你的hook_load实现有点不对。
/**
* Implementation of hook_load().
*/
function module_load($node) {
$additions = db_fetch_object(db_query('f1,f2,...,f10 FROM {tb1}
INNER JOIN {tb2} ON {tb1}.vid = {tb2}.vid
WHERE {tb1}.vid = %d', $node->vid)); //
return $additions;
}
您不应该返回节点,而应该添加要添加到节点的添加项。此外,您加入vid后不需要两个where子句。
您的问题可能是查询正在运行,但您在钩子中返回了错误的内容。
您还可以在example module中看到它的使用示例。