2017-08-23 28 views
0

我不斷收到此錯誤消息。如何使用getparam和bindparam以正確的方式

非法參數編號:綁定變量的數量不符令牌

我想放置變量數組的數量。但我不斷收到錯誤,是否有任何stmt我應該使用,我失蹤了?你可以向我解釋或向我推薦我可以閱讀的內容以瞭解如何正確使用它們?

$userA = $request->getParam('usera'); 
    $userB = $request->getParam('userb'); 
    $userC = $request->getParam('userc'); 

    $sql = "SELECT *FROM admins"; 

    try { 
    $db = new db(); 
    $db = $db->connect(); 
    $stmt = $db->prepare($sql); 

    $stmt->bindParam(':Adminusera', $userA); 
    $stmt->bindParam(':Adminuserb', $userB); 
    $stmt->bindParam(':Adminuserc', $userC); 

    $stmt->execute(); 

    $admin = $stmt->fetch(PDO::FETCH_OBJ); 

    $db = null; 

    if(!empty($admin)){ 
    $newUsers = array('a' => $userA, 'b' => $userB, 'c' => $userC); 

    print_r($newUsers); } 
+0

通常,PHP錯誤消息也表明發生錯誤的行。它真的是你創建數組的線嗎? – mixable

+0

@mixable沒有真正顯示一條線,我使用郵差,當我刪除bindparam部分數組顯示空值 – mirvatJ

+0

你可以發佈整個代碼的東西丟失,並通過向我們展示一部分,我們無法弄清楚 –

回答

0

對不起,我以爲你有問題的結合..... 這是你如何能得到的參數

// $_GET parameters 
$request->query->get('name'); 

// $_POST parameters 
$request->request->get('name'); 

我又讓這個所以如果任何人有與此相關的一個問題能找到一些有用的東西

[With bindParam]與PDOStatement :: bindValue()不同,該變量綁定爲引用,並且僅在調用PDOStatement :: execute()時進行評估。

所以,例如:

$name = 'Alex'; 
$s = $dbh->prepare('SELECT name FROM students WHERE name = :name'); 
$s->bindParam(':name', $name); // use bindParam to bind the variable 
$name = 'Mike'; 
$s->execute(); // executed with WHERE name = 'Mike' 

$name = 'Alex'; 
$s = $dbh->prepare('SELECT name FROM students WHERE name = :name '); 
$s->bindValue(':name ', $name); // use bindValue to bind the variable's value 
$name = 'Mike'; 
$s->execute(); // executed with WHERE name = 'Alex' 
+0

謝謝你的解釋,但我需要知道的是,當有人張貼到我的函數不能捕獲他們發送的值在他們的職位使用getparam並分配他們在數組中? – mirvatJ

+0

檢查更新的答案 –

+0

謝謝你的夥伴,只是最後一個問題'$ request-> request-> get('name');'和'$ request-> getParam('name'); '' – mirvatJ

相關問題