2014-02-18 154 views
-2

我想把下面的代碼放入一個函數,因爲我需要使用它很多次,但有一個變量($主題),但它似乎並不正在工作。如果我從函數中移除它並運行它,它可以正常工作,但一進入函數並被調用它就會中斷,所以我不確定代碼本身有什麼問題。我是使用PHP函數的新手,但是我需要傳遞一切還是可以訪問函數以外的變量,例如上面定義的$ connect和$ id變量?PHP工作以外的功能,但不會工作內功能

function count($subject){ 

    $getCount = $connect->prepare('SELECT count(*) FROM entries WHERE uid = :id AND subject = :subject'); 
    $getCount->execute(array(
     ':id' => $id, 
     ':subject' => $subject 
    )); 
    $rowCount = $getCount->fetchColumn(); 

    return $rowCount; 
} 

echo count("English"); 
+0

可能的範圍問題。嘗試在此行後面添加'global $ connect;'函數count($ subject){' – Latheesan

+0

嘗試重命名函數 – ponciste

+0

Cheers guys,事實證明這是一個範圍問題。我認爲上面的函數的所有PHP變量是全局的,但它似乎沒有。 – burg93

回答

1

$connect在函數內部不再可訪問。一個簡單的,但糟糕的解決將是這樣的:

function count($subject){ 
    global $connect 

一個更好的解決將是您在$connect變量發送到功能:

function count($subject, $connect){ 

,改變你的函數調用

count("The subject", $connect) 
+0

對不起,看來是人類已知的最簡單的問題!由於我所有的變量都直接在函數上面定義,我假設它們都被定義爲PHP中的全局變量。它通過了必要的變量後,現在完美的工作。謝謝。 – burg93

+0

@ burg93,聽起來你可能想花一些時間閱讀關於[variable scope](http://php.net/manual/en/language.variables.scope.php)的PHP文檔。 –

+0

@MarkParnell完美謝謝,我現在就讀一讀。 – burg93