2017-07-07 22 views
0

に定義されていなかったが、私のクエリである:無効パラメータ番号:パラメータは、{パス}ここ

SELECT qa.id, 
     qa.subject, 
     qa.category cat, 
     qa.keywords tags, 
     qa.body_html, 
     qa.amount, 
     qa.author_id author, 
     qa.visibility, 
     qa.date_time, 
     COALESCE(u.reputation, 'N') reputation, 
     COALESCE(CONCAT(u.user_fname, ' ', u.user_lname), 'ناشناس') name, 
     COALESCE(u.avatar, 'anonymous.png') avatar, 

    (SELECT COALESCE(sum(vv.value),0) 
    FROM votes vv 
    WHERE qa.id = vv.post_id 
    AND 15 = vv.table_code) AS total_votes, 

    (SELECT COALESCE(sum(vt.total_viewed),0) 
    FROM viewed_total vt 
    WHERE qa.id = vt.post_id 
    AND 15 = vt.table_code 
    LIMIT 1) AS total_viewed 
FROM qanda qa 
INNER JOIN qanda_tags qt ON qt.qanda_id = qa.id 
INNER JOIN tags ON tags.id = qt.tag_id 
LEFT JOIN users u ON qa.author_id = u.id 
AND qa.visibility = 1 
WHERE qa.type = 0 
    AND tags.name = :t 
ORDER BY total_votes DESC, 
     qa.id DESC 
LIMIT :j, 
     11; 

これはprint_r()パラメータ配列の結果である:(Iは​​引数としてクエリに渡し)

Array ([:t] => برچسب1 [:j] => 0) 

そして、私はクエリを実行すると、このエラーがスローされます。

Fatal error: Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in C:\xampp\htdocs\myweb\others\questions.php:140 Stack trace: #0 C:\xampp\htdocs\myweb\others\questions.php(140): PDOStatement->execute(Array) #1 C:\xampp\htdocs\myweb\application\other.php(21): questions->index() #2 C:\xampp\htdocs\myweb\index.php(149): require_once('C:\xampp\htdocs...') #3 {main} thrown in C:\xampp\htdocs\myweb\others\questions.php on line 140

誰でも問題を見つけることができますか?それは1時間です、私はそれを見て、それは私には良いようです。

+1

パラメータをバインドしているコードを確認できますか –

答えて

0

あなたはPDOパラメータをエミュレートする方法の問題に実行している可能性があります

array(':t' => برچسب1 ':j' => 0) 
0

を使用する必要があります。

ここに私の答えを参照してください:Parametrized PDO query and `LIMIT` clause - not working

をあなたがエミュレートされたパラメータをオフにする必要があり、次のいずれか

$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

さもないと、あなたがPHPの整数を結合し、整数としてそれを指定する必要があります。

$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, true); 
... 
$stmt->bindValue('j', (int) $int, PDO::PARAM_INT); 
関連する問題