這是我的 model
$stmt = $pdo->prepare(
"SELECT
m.*
FROM `media` as m
WHERE m.name LIKE :query
OR m.description LIKE :query
OR m.tags LIKE :query
ORDER BY m.add_time DESC "
);
$stmt->execute([
'query' => '%'.$QUERY.'%'
]);
return $stmt->fetchAll();
確定欄位和資料表無誤
$QUERY 值也是有順利傳過來
只是報錯誤「Invalid parameter number」說是這行有問題 'query' => '%'.$QUERY.'%'
我換成了 "%$QUERY%"
也是一樣~
稍微查了一下 stackoverflow 也是這樣的做法
所以有點卡住了
確定資料表有資料可供搜尋
請大大指點,感謝~
Invalid parameter number :
SELECT
m.*
FROM `media` as m
WHERE m.name LIKE :query1
OR m.description LIKE :query2
OR m.tags LIKE :query3
ORDER BY m.add_time DESC
傳入 query1,query2,query3 試試
要「一個打十個」的話
得加一列$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, true);
請看網友解答
選我正解
我發現好像有衝突⋯⋯我改成 true 後,有些 model 就壞了
我開了 true 後
這個 model 壞了
$stmt = $pdo->prepare(
"SELECT
u.*,
p.*
FROM `user` as u
JOIN `permission` as p ON p.permission_id = u.permission_id
WHERE u.id = :id
AND u.permission_id > 1
AND u.block = 0 "
);
$stmt->execute([
'id' => $_SESSION['admin-id']
]);
return $stmt->fetch();
這是哪裡有問題?
開回 false 就好了
看起來 true 是強制 execute