我想用键从表中选择记录。我的代码正在工作,但它并没有选择所有关于Php和Mysql的记录,它只选择Php,Mysql记录。我的代码是
$skill=PHP,Mysql;
mysql_query("select * from tablename(skill) where fieldname(key) like '%$skill%'");
尝试执行此
mysql_query("select * from skill where (key like '%PHP%' OR key like '%Mysql%')");
由于$skill变量中有逗号分隔的值,类似运算符的操作将无法正常工作,请尝试使用以下查询
select * from skill where FIND_IN_SET(keyn,'$skill')
在上演示sql fiddlehttp://sqlfiddle.com/#!2/181c74/5
$skill="PHP,Mysql";
mysql_query("select * from skill where key like '%$skill%'");
我假设您希望搜索包含"PHP"、"MySQL"或两者的记录。您正在做的是搜索"PHP,MySQL"的确切字符串。
一个快速而肮脏的解决方案是将$skill变成一个在逗号上拆分的数组,然后使用OR关键字搜索每个术语。
例如:
$skill = array("PHP", "MySQL");
$query = "select * from tablename(skill) where ";
foreach ($skil in $skill)
$query . "fieldname(key) like '%$skil%' OR ";
//code to remove the OR at the very end
在查询中使用in
select * from `skills` WHERE skillslist in ('Php','Javascript')
运行演示Fiddle