2017-08-22 40 views
-2

我不是一個專業人員,剛開始學習PHP編碼。在一個PHP函數裏面使用PDO查詢

我有一些問題得到PDO在函數內部工作。希望有人會告訴我正確的方式來編寫一個函數。

function testKey($key){ 
// CHECK IF LINK IS AVAILABLE IN THE DATABASE 
$result = dbConnect()->prepare("SELECT _uniq_key FROM _link_key WHERE 
_uniq_key= :1 AND _active= :2"); 
    $result->bindParam(':1', $key); 
    $result->bindParam(':2', $o); 
    $result->execute(); 
    $rows = $result->fetch(PDO::FETCH_NUM); 
     if($rows > 0) { 

      echo 'link is available'; 
      checkLink(); 

     } 
     else 
     { 

      echo 'link does not exist!'; 
     } 
} 

PDO無法正常工作,也不會執行PDO腳本。

+2

什麼不起作用?問題是什麼?請同時發佈代碼的輸出。 – Silencer310

+0

如果我在函數外部刪除了PDO,PDO將正常工作並從數據庫獲取數據,如果它在該函數中,則不存在數據 –

+1

如果您還沒有收到「未定義的變量$ o」消息,然後在你的腳本上啓用'error_reporting(E_ALL);'。接下來仔細看看你的函數定義及其參數。 – mario

回答

-2

發現我的錯誤,工作代碼:

function testKey($key){ 
global $key; 
// CHECK IF LINK IS AVAILABLE IN THE DATABASE 
$result = dbConnect()->prepare("SELECT _uniq_key FROM _link_key WHERE 
_uniq_key= :1 AND _active= :2"); 
$result->bindParam(':1', $key); 
$result->bindParam(':2', $o); 
$result->execute(); 
$rows = $result->fetch(PDO::FETCH_NUM); 
    if($rows > 0) { 

     echo 'link is available'; 
     checkLink(); 

    } 
    else 
    { 

     echo 'link does not exist!'; 
    } 
} 
+1

'$ o'從哪裏來?爲了這是一個有效的答案,請解釋你學到的東西,這樣會使其他人受益。說實話,你不通過一個參數並使用* global *關鍵字是沒有意義的。或者關閉你的問題。 – ficuscr

+1

這是一個不好的答案。添加'global'使其工作意味着將它作爲參數傳遞將被忽略。 – ryantxr

+0

發佈您的整個代碼。我認爲有很多事情你不明白,並且執行不正確。有人會告訴你正確的方法。 – Silencer310

-2

小調整在這裏

if($rows > 0) { 

    echo 'link is available'; 
    checkLink(); 

} 
else 
{ 

    echo 'link does not exist!'; 
} 

試試這個

if($result->rowCount() > 0) { 

    echo 'link is available'; 
    checkLink(); 

} 
else 
{ 

    echo 'link does not exist!'; 
} 
+0

這是如何有用?這解決了什麼問題? – Silencer310

+0

這不是個好建議。見[this](http://php.net/manual/en/pdostatement.rowcount.php)。 'rowCount'不會做你認爲它做的事。 – ryantxr

1
function testKey($key){ 
    // global $key; BAD 
    // Assuming that active must be 1 
    $active = 1; 
    // CHECK IF LINK IS AVAILABLE IN THE DATABASE 
    // Assuming that dbConnect() makes the correct PDO object 
    $result = dbConnect()->prepare("SELECT _uniq_key FROM _link_key WHERE _uniq_key= :1 AND _active= :2"); 
    $result->bindParam(':1', $key); 
    $result->bindParam(':2', $active); // only find active records 
    $result->execute(); 
    $rows = $result->fetch(PDO::FETCH_NUM); 

    if($rows !== false) { 
     // http://php.net/manual/en/pdostatement.fetch.php 
     // If no record, this function will also return false. 
     echo 'link is available'; 
     checkLink(); // not sure what this does 
    } 
    else 
    { 
     echo 'link does not exist!'; 
    } 
} 

現在調用該函數:

$mySpecialKey = 'mango'; 
testKey($mySpecialKey); // note parameter is passed here