2014-06-11 19 views
0

我有這個功能從MySQL數據庫檢查的消息文件:PHP函數:如何做派值到HTML

function check_Files($id){ 

    $files = sqlaccess::fetch("SELECT url FROM ".FILES." WHERE news_id=".$id." AND type = 'video' "); 

    if (count($files) > 0) { 
     foreach($files as $file){ 
      $url = $file['url']; 
     return TRUE; 
     } 

    } else 
    { 
     return FALSE; 
    } 

} 

HTML:

if(check_Files($id) == TRUE){ 

echo $url; 

} 

但我看到這個錯誤:

Notice: Undefined variable: url in ...... 

如何從功能返回/發送$url

+0

'sqlaccess'類背後有什麼樣的數據庫庫?也許他們返回值作爲屬性:'$ file-> url' – DanFromGermany

+0

您正在使用循環來獲取網址,並可能有多個網址? –

+0

您的代碼可能容易受到SQL注入的影響。如果可能的話使用PDO! – tangrs

回答

4

而不是

return TRUE; 
check_Files功能

做:

return $url; 

而在下面的方式來使用它:

if (($url = check_Files($id)) !== false){ 

    echo $url; 

} 

還是要通過從數據庫URL的數組:

function check_Files($id){ 

    $files = sqlaccess::fetch("SELECT url FROM ".FILES." WHERE news_id=".$id." AND type = 'video' "); 

    if (count($files) > 0) { 
     $urls = array(); 
     foreach($files as $file){ 
      $urls[] = $file['url']; 
     } 
     return $urls; 
    } else { 
     return FALSE; 
    } 

} 

if (($urls = check_Files($id)) !== false){ 

    foreach ($urls as $url) { 
     echo $url; 
    } 

} 

該測試可以被簡化爲:

if ($urls = check_Files($id)){} 
+1

@aldanux謝謝,我編輯了我的答案。 – hsz

0

這是一個關於variable scope。在函數內部,存在$ url。功能之外,它不在身邊了。最好的辦法是返回URL,而不是真/假:外

function check_Files($id){ 

    $files = sqlaccess::fetch("SELECT url FROM ".FILES." WHERE news_id=".$id." AND type = 'video' "); 

    if (count($files) > 0) { 
     foreach($files as $file){ 
      $url = $file['url']; 
     return $url; 
     } 

    } else 
    { 
     return FALSE; 
    } 

} 

然後在你的代碼,你可以調用它像這樣:

$link=check_Files($id); 
echo $link; 

甚至乾脆

echo check_Files($id); 
0
function check_Files($id){ 

    $files = sqlaccess::fetch("SELECT url FROM ".FILES." WHERE news_id=".$id." AND type = 'video' "); 

    if (count($files) > 0) { 
     foreach($files as $file){ 
      $url = $file['url']; 
     return $url; 
     } 

    } else 
    { 
     return FALSE; 
    } 

} 

and in html

if (($url = check_Files($id)) != false){ 

    echo $url; 

} 
+0

http://stackoverflow.com/questions/24160124/php-function-how-do-send-value-to-html#comment37286254_24160191 –

0

函數是否在被調用的同一個文件中定義?因爲這個錯誤似乎是你試圖輸出一個沒有定義的變量。 一個更好的辦法是

function check_Files($id){ 

    $files = sqlaccess::fetch("SELECT url FROM ".FILES." WHERE news_id=".$id." AND type = 'video' "); 

    if (count($files) > 0) { 
     foreach($files as $file){ 
      $url = $file['url']; 
     return $url 
     } 

    } else 
    { 
     return FALSE; 
    } 

} 

if(check_Files($id) != FALSE){ 

echo check_Files($id); 

} 
0

將$網址在函數內部全局和定義函數高於$網址那麼只有你可以得到$網址;

$url=""; 

function check_Files($id){ 
    global $url; 

    $files = sqlaccess::fetch("SELECT url FROM ".FILES." WHERE news_id=".$id." AND type = 'video' "); 

    if (count($files) > 0) { 
     foreach($files as $file){ 
      $url = $file['url']; 
     return TRUE; 
     } 

    } else 
    { 
     return FALSE; 
    } 

} 

if(check_Files($id) == TRUE){ 
    echo $url; 
} 

檢查自己並享受!