【发布时间】:2016-11-04 08:38:36
【问题描述】:
我尝试过用 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();}
【问题讨论】:
-
试试
bindParam而不是bindValue -
返回“致命错误:无法通过引用传递参数 2”
-
该错误意味着第二个参数应该是对变量的引用。
$_POST['search']是一个变量,但您的代码希望 PHP 解释常量“搜索”。您缺少标识符周围的引号。 -
带或不带引号都存在错误。如果我将它们切换到 bindValue 而不是 bindParam 它们可以工作,但 $loggeduser 不会绑定。我已经在 $loggeduser 上尝试了 bindValue 和 bindParam ,但都没有任何效果。我还回显了传递变量的 $_POST['search'](和 $_POST[search])。
-
我完全傻眼了。我已经尝试过 bindParam (我认为它不应该工作,因为 '%' 实际上不是对变量的引用。我尝试过 bindValue。我尝试在第一次绑定时只使用 bindParam,不管我怎么做这个,第二个和第三个绑定值工作完美,但不是第一个。我还回显了所有变量以确保返回值。我不知所措。