Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL查询以匹配数组中的所有内容_Sql_Mysql - Fatal编程技术网

MySQL查询以匹配数组中的所有内容

MySQL查询以匹配数组中的所有内容,sql,mysql,Sql,Mysql,我有一个复杂的问题,我已经纠结了两天,似乎无法运行它。我有两个查询-第一个查询很好,但我无法理解第二个查询 我做错了什么 CREATE TABLE `recipes` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(100) NOT NULL default '', `cat` int(5) NOT NULL default '0', `instructions` text NOT NULL, `

我有一个复杂的问题,我已经纠结了两天,似乎无法运行它。我有两个查询-第一个查询很好,但我无法理解第二个查询 我做错了什么

CREATE TABLE `recipes` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `name` varchar(100) NOT NULL default '',
  `cat` int(5) NOT NULL default '0',
  `instructions` text NOT NULL,
  `submitted_by` varchar(100) NOT NULL default '',
  `addDate` date NOT NULL default '0000-00-00',
  `hits` int(7) NOT NULL default '0',
  `metaDesc` text NOT NULL,
  `metaKeys` text NOT NULL,
  `enComments` enum('yes','no') NOT NULL default 'yes',
  `enRating` enum('yes','no') NOT NULL default 'yes',
  `enRecipe` enum('yes','no') NOT NULL default 'yes',
  `isApproved` enum('yes','no') NOT NULL default 'no',
  `comCount` int(7) NOT NULL default '0',
  `ratingCount` int(8) NOT NULL default '0',
  `ipAddresses` text NOT NULL,
  `email` varchar(250) NOT NULL default '',
  `rss_date` varchar(35) NOT NULL default '',
  PRIMARY KEY  (`id`),
  FULLTEXT KEY `name` (`name`,`instructions`,`metaDesc`,`metaKeys`),
  FULLTEXT KEY `submitted_by` (`submitted_by`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=37 ;

CREATE TABLE `ingredients` (
  `id` int(10) NOT NULL auto_increment,
  `recipe` int(8) NOT NULL,
  `qty` varchar(128) NOT NULL,
  `measurement` varchar(128) NOT NULL,
  `ingredient` varchar(128) NOT NULL,
  PRIMARY KEY  (`id`),
  KEY `ingredient` (`ingredient`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=135 ;
我创建了一个查询,将搜索词与配料表中的任何配料匹配,并生成整个配方的结果

$q_recipe = mysql_query("SELECT * FROM recipes
     WHERE enRecipe  = 'yes'
     AND isApproved  = 'no'
     AND MATCH(name,instructions,submitted_by,metaDesc,metaKeys) AGAINST('".$search."') IN BOOLEAN MODE)
     OR id IN (SELECT distinct recipe FROM ingredients WHERE ingredient LIKE '%".$search."%')
          ORDER BY name LIMIT $limit") or die(mysql_error());

我们的目标是重写上面的查询,以提供一个新的搜索功能,该功能只将搜索词数组与包含数组中所有词的菜谱相匹配。救命啊

在“反对”中加上括号。将
对(“$search.”在布尔模式下)更改为
对(“$search.”在布尔模式下)


我也会注意让两个表使用不同的字符集。

找到了一个解决方案,尽管它可能不是最有效的

foreach ($search as $item) {
    $sql .= "AND id IN (SELECT recipe FROM ingredients WHERE ingredient like '%".$item."%') ";
}
$q_sql = "SELECT * FROM recipes
          WHERE enRecipe  = 'yes'
          AND isApproved  = 'no'
          ".$sql;