0

我想使用 pdo 类并使用 where like % % 子句从 MSSQL DB 获取一些数据

我要查找用户名:mozzey0410

如果我只搜索 mozzey04 或 mozzey041 我可以找到它。但是如果我尝试使用全名:mozzey0410 没有给出记录。如何解决这个问题?我想使用相同的查询搜索完整或部分名称。

$user2 = $db->prepare("Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id like ? and mail_addr like ?");
$user2->bindValue(1, $userid . '%');
$user2->bindValue(2, $mail . '%');
$user2->execute();
$user = $user2->fetchall();
4

3 回答 3

0

wildcard我认为您可以在变量前添加并附加

$user2->bindValue(1, '%' . $userid . '%', PDO::PARAM_STR);
$user2->bindValue(2, '%' . $mail . '%', PDO::PARAM_STR);

否则,您可以使用名称而不是占位符来做一些不同的事情

$user2 = $dbh->prepare('Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id like :userid and mail_addr like :mail');

$userid = "%".$userid ."%";
$mail= "%".$mail."%";

$user2->bindParam(':userid', $userid, PDO::PARAM_STR);
$user2->bindParam(':mail', $mail, PDO::PARAM_STR);
于 2013-06-14T08:47:54.833 回答
0

好的,发现问题:

我的列搜索 (memb___id) 的长度是 10,我改为 16 并且现在可以使用!所以这都是关于列长度的。

于 2013-06-14T11:08:39.390 回答
0

尝试

$user2 = $db->prepare("Select top 100 memb_guid,memb___id,mail_addr,Gender,Country from MEMB_INFO where memb___id like concat('%',?,'%') and mail_addr like ?");

并绑定不带 '%' 的值

于 2013-06-14T08:47:34.607 回答