2012-09-22 147 views
-1

我有一个问题。我想返回函数的值作为MySQL的结果返回函数值作为Mysql结果

function Gets_comments_array_from_db($type, $thread_comment_id) { 
# Sets variable for Query 
    $The_TYPE = $type; 
    $Thread = mysql_real_escape_string(intval($thread_comment_id)); 

# return array query for Further working 
    return mysql_query("SELECT * FROM `site_comments` WHERE `type`='".$The_TYPE."' AND `thread_comment_id`='".$Thread."'"); 

}

而且

while($comment = mysql_fetch_array(Gets_comments_array_from_db('news', $id)){ 
                echo '11'; 
               } 

谢谢! :)

+1

循环为什么你不知道,这并不功能正常吗?您在while循环的每次第一次迭代中都执行'Gets_comments_array_from_db',因此您一次又一次地执行查询。只得到第一个结果..如果有的话。而你为什么要这么做呢?所以没有意思.. – dbf

+0

你是否在某处迭代$ id ...? –

回答

0

As dbf表示您正在执行while循环的每次迭代的查询。您需要像这样更改代码:

$rs = Gets_comments_array_from_db('news', $id); 

while($comment = mysql_fetch_assoc($rs)) { 
    echo '11'; 
} 

现在您将得到一次结果,然后在while循环中遍历它们。在循环内部,您还可以使用列名作为数组键来处理值。

while($comment = mysql_fetch_assoc($rs)) { 
    $field1 = $comment['field1']; 
    $field2 = $comment['field2']; 
    $field3 = $comment['field3']; 
} 

如果你组织你的MySQL查询像这样

SELECT Field1, Field2, Field3, Field4 FROM {table} WHERE {where_clause} 

,你将能够设置您的变量,而像这样的

$rs = Gets_comments_array_from_db('news', $id); 

while(list($field1, $filed2, $filed3, $field4) = myslq_fetch_row($rs)) { 
    // use variables here 
}