2017-08-23 9 views
0

このエラーメッセージが引き続き表示されます。bindparamでgetparamを正しい方法で使用する方法

無効なパラメータ番号:バインド変数の数は、私は、配列内の変数を配置しようとしていますトークン

の数と一致していません。しかし、私はエラーが発生している、私は行方不明を使用する必要があります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'); 

を得ることができる方法である .....あなたはバインディングに問題があったと思った申し訳ありません有用なものを見つける

[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

関連する問題