1

我尝试用 100 种不同的方式编写代码,但无法找出正确的语法。似乎无论我怎么写, $loggeduser 都不会传递给 WHERE 用户名。我究竟做错了什么?什么是正确的语法?

$query = $db->prepare('SELECT * FROM sites WHERE username = ? AND name LIKE ? OR login LIKE ? AND category="te"');
$query->bindValue(1, $loggeduser);
$query->bindValue(2, '%'.$_POST[search].'%');
$query->bindValue(3, '%'.$_POST[search].'%');
$query->execute();}
4

1 回答 1

0

根据这个评论

绑定参数时,显然您不能两次使用占位符(例如“从发件人=:我或收件人=:我的邮件中选择 *”),您必须给它们不同的名称,否则您的查询将空手返回(但不幸的是,没有失败)。

这可能是您的问题,因为您试图将相同的值绑定到两个单独的占位符。尝试以下方法:

$query = $db->prepare('SELECT * FROM sites WHERE username = :username AND name LIKE :name OR login LIKE :login AND category="te"');
$query->bindValue(:username, $loggeduser);
$query->bindValue(:name, '%'.$_POST['search'].'%');
$query->bindValue(:login, '%'.$_POST['search'].'%');
$query->execute();
于 2016-07-02T05:09:26.467 回答