Php 我的PDO执行函数出错
我有以下疑问:Php 我的PDO执行函数出错,php,mysql,pdo,Php,Mysql,Pdo,我有以下疑问: SELECT case when card_type='A' then name else CONCAT_WS(' ',firstname,lastname) end as cname ,cardid,card_type,isDeck,userid_from,status,cards.gibid,message ,userid_to,description,tagline,gibs.preview_thumb
SELECT case when card_type='A' then name else CONCAT_WS(' ',firstname,lastname) end
as cname ,cardid,card_type,isDeck,userid_from,status,cards.gibid,message ,userid_to,description,tagline,gibs.preview_thumb
,case when userid_from=userid_to then 'my card ' else 'other 'end as owner
FROM cards LEFT JOIN gibs ON gibs.gibid=cards.gibid
left join users on users.userid=cards.userid_from
WHERE userid_to=? and cards.deleted='N' and (case when card_type='A' then name else CONCAT_WS(' ',firstname,lastname) end) like '%?%'
order by status,card_type desc,owner,cname,isDeck desc
在执行函数中传递的数组为:
Array
(
[0] => 1
[1] => rahul
)
这给了我错误
Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in /var/www/ryapi/Db.php on line 176
Fatal error: Uncaught exception 'PDOException' with message 'Database error [HY093]: , driver error code is ' in /var/www/ryapi/Db.php:179
Stack trace:
#0 /var/www/ryapi/Db.php(93): Db::_query('SELECT case whe...', Array)
#1 /var/www/ryapi/card.php(152): Db::getResult('SELECT case whe...', Array)
#2 /var/www/ryapi/index.php(103): Card->getcardlist('1', '', 'rahul')
#3 {main}
thrown in /var/www/ryapi/Db.php on line 179
出现此错误的原因请提出建议。这很可能是您的问题:
CONCAT_WS(' ',firstname,lastname) end) like '%?%'
绑定参数不是这样工作的,您需要将其更改为
CONCAT_WS(' ',firstname,lastname) end) like ?
并使用通配符扩展传入的值
CONCAT_WS(' ',firstname,lastname) end) like '%?%'
此处,“%?%”不是pdo参数。
你应该做到:
CONCAT_WS(' ',firstname,lastname) end) like ?
然后绑定:
Array
(
[0] => 1
[1] => '%rahul%'
)
这是一个可以在PHP中修复的简单错误。您还没有包含PHP,所以我们无法确定
您需要调整的数量?pdo->prepare语句中的符号。但这样做不会返回任何符号result@Rahul梅塔:重读我的最后一句话,或者读一下皮努斯内格拉的答案。