DBO选择等于和等的位置

时间:2016-07-01 20:58:59

标签: php mysql dbo

我尝试过以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();}

1 个答案:

答案 0 :(得分:0)

根据this comment

  

当绑定参数时,显然你不能使用占位符两次(例如"从发件人=:我或收件人=:我"的邮件中选择*),你必须给他们不同的名字,否则你的查询将空手而归(但不幸的是,不会失败)。

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

$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();