如果子句'where like'使用


PDO Can't find data if clause 'where like' is used

我想使用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();

try

$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 ?");

并绑定不带'%'的值

我认为你可以在变量

后面加上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);

Ok,找到问题了:

我的列搜索(memb___id)的长度是10,我改为16,现在工作!所以这都是关于列长度的