2016-07-24 5 views
0
 $sth = $dbh->prepare("SELECT users.userID,fname,lname,status FROM users INNER JOIN friends ON users.userID = friends.friendID WHERE friends.userID = ? AND ((friends.status LIKE 'group%' OR friends.status = 'friends') OR (users.status = '?') OR (users.userID = ?)) ORDER BY friends.status,lname,fname ASC"); 
    $sth->execute(array($_SESSION['userID'],'sub:'.$_SESSION['userID'],$_SESSION['userID'])); 

上記のコードでは、私はクエリでprepare文があることがわかります。このクエリでは、変数置換の疑問符が3つあります。 execute文では、変数を指定します。私が最後にチェックしたのは、3つまで数えることができますが、PHPは同意しません。実行されている行に対して、「無効なパラメータ番号:バインドされた変数の数がトークンの数と一致しません」と表示され続けます。PHPバインドされたパラメータのデータベースコールがコロンを使用する場合のパラメータ数が間違っています

私はそれが2番目のパラメータで結腸に関連する可能性があると思ったので、私はそれを取り出しましたが、同じことをしました。私も文字列の連結を引っ張って、ちょうどuserIDを残して、私は同じことを持っています。

これは本当に遅れているか、ここでいくつかのブードーが起こっています。どんな洞察?

答えて

1

この'?'はプレースホルダではなく、リテラルの疑問符です。プレースホルダは引用されません。 2つのプレースホルダーがあり、3つの値がバインドされました。

ので、試してみてください。

$sth = $dbh->prepare("SELECT users.userID,fname,lname,status FROM users INNER JOIN friends ON users.userID = friends.friendID WHERE friends.userID = ? AND ((friends.status LIKE 'group%' OR friends.status = 'friends') OR (users.status = ?) OR (users.userID = ?)) ORDER BY friends.status,lname,fname ASC"); 
+0

ありがとうございました。それは私を夢中にさせていました。私が昨晩疲れていなくても、私がそれを理解したかどうかはわかりません。 PHPを知的に挿入する必要があります。それで。 –

関連する問題