【问题标题】:pdo LIKE not workingpdo LIKE 不工作
【发布时间】:2013-10-24 15:03:12
【问题描述】:

我的代码是 jquery ajax 调用的一部分,它返回数据库中的所有结果,而不仅仅是我输入的项目,我不明白为什么,有什么建议吗?

$lname = '%'.$_POST['lname'].'%';   

$database->query("SELECT * FROM cust WHERE org_id = :org_id AND lname LIKE :lname");
$database->bind(':lname',$lname);
$database->bind(':org_id',$_SESSION['org_id']);
$existing = $database->resultset();

提前多谢

【问题讨论】:

  • 您的意思是它返回所有ord_id = ... 行,而不管lname 是什么?您是否确认 $_POST['lname'] 包含您认为的内容?
  • 标记,是的,这是正确的,它返回所有 org_id 条目并忽略 LIKE 部分。如果我将 LIKE 更改为 = (并删除 % 符号),这一切似乎都在工作。我还手动输入了 dbase 中的名称,即 AND lname LIKE '%smith%',这是一种享受。
  • 您确认$_POST['lname'] 包含您认为的内容吗?
  • 是的,我可以确认确实如此,我已经测试过,我最初返回 smith,然后当我在 php 代码中时返回 %smith%。
  • @DeanHaines 你能在问题中显示你想从 cust 表中获取的行吗?我的意思是在问题中包含表格的一些示例行。

标签: php mysql pdo


【解决方案1】:

终于把这个排序了,在 PHP 文件中我需要在 echo 之前添加这一行:

header("Content-Type: application/json", true);

感谢大家的努力

【讨论】:

  • 如果您更好地解释代码和问题,其他用户会得到答案。
【解决方案2】:
  1. 您不能直接从 PDO 连接执行代码 变量。
  2. 它是 bindParam 而不是 bind
  3. PDO 中没有“结果集”功能
  4. 要使用 bindParam 附加值,您必须将 PDO 准备函数中的SQL代码。

整体代码应该是:

$lname = '%'.$_POST['lname'].'%';   
$sql=$database->prepare("SELECT * FROM cust WHERE org_id = :org_id AND lname LIKE :lname");
$sql->bindParam(':lname',$lname,PDO::PARAM_STR);
$sql->bindParam(':org_id',$_SESSION['org_id'],PDO::PARAM_INT);
$sql->execute();
$existing=$sql->fetch();//Resultset

其中 $database 是有效的 PDO 连接。

【讨论】:

  • 我越来越认为你的年龄不再是草率和毫无意义的答案的借口。
  • 如果您只打算更改一个次要且毫无意义的事情,否则只是重新发布 OP 的代码,那么至少指出您在何处进行了该次要更改...
  • 对不起,我应该提到我在这里使用这个类culttt.com/2012/10/01/roll-your-own-pdo-php-class 我知道连接是有效的,因为我已经在整个项目的许多地方使用它们。感谢您在此方面的帮助
猜你喜欢
  • 1970-01-01
  • 2016-04-19
  • 2014-10-14
  • 2016-06-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-05
相关资源
最近更新 更多