2012-09-22 207 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 
}