Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 我想编写一个多条件查询来显示表中的结果_Mysql - Fatal编程技术网

Mysql 我想编写一个多条件查询来显示表中的结果

Mysql 我想编写一个多条件查询来显示表中的结果,mysql,Mysql,我有一个名为info的表,它有3列:Id、city、country。 我需要过滤表格。也就是说,当我搜索城市和国家时,它应该显示准确的行,但当我只搜索国家时,它应该显示该国家的所有城市。我如何写条件 我尝试过使用AND和OR,但它们只执行一项任务。我当前的查询 SELECT * FROM info WHERE name='$_POST[name1]' AND country='$_POST[country1]'; 这项工作既适用于油田,也适用于油田 SELECT * FROM info w

我有一个名为info的表,它有3列:Id、city、country。
我需要过滤表格。也就是说,当我搜索城市和国家时,它应该显示准确的行,但当我只搜索国家时,它应该显示该国家的所有城市。我如何写条件

我尝试过使用AND和OR,但它们只执行一项任务。我当前的查询

SELECT * FROM info WHERE name='$_POST[name1]' AND country='$_POST[country1]'; 
这项工作既适用于油田,也适用于油田

SELECT * FROM info where name='$_POST[name1]' OR country='$_POST[country1]';

如果同时在两个字段上搜索,则此操作失败

名称和国家/地区都是varchar,请按如下方式使用:

SELECT * FROM info WHERE name LIKE '$_POST[name1]' OR country LIKE '$_POST[country1]';
试试这个

试试这个:

$condition = '';
$query = ''
if(!empty($_POST[name1])) { $condition .= "and name LIKE '$_POST[name1]' "; }
if(!empty($_POST[country1])){ $condition .= "and country LIKE '$_POST[country1]' "; }
$query = "SELECT * FROM info WHERE Id !='' " . $condition;

mysqli_query($connection,$query);

尝试使用like,而不是我认为应该使用两个单独的SQL语句,并根据提供的查询数据选择要执行的语句。我假设有某种方法可以通过使用表本身的条件联接在单个查询中实现这一点,但这将导致一个非常复杂的查询,执行起来并不好。现在,当我搜索两个字段时,它都失败了。如果我搜索名称纽约和美国国家,它会显示所有美国字段。纽约、新泽西等地。我应该在$qry里放什么?顺便说一句,非常感谢您在这方面的帮助。$qry只是一个变量,如果name1,country1不是空的,那么它使用连接(.)运算符创建这样的查询。这样形成的查询,您还定义了$qry='';在代码开头,非常感谢您,它现在正在运行,您是一个救生员。我更改了代码,因为它给了我mysql\u fetch\u array()参数1错误。新代码是:if(empty($\u POST['name1']){$sqlsearch=“SELECT*FROM info WHERE name='$\u POST[name1]'或country='$\u POST[country1]'”;}否则{$sqlsearch=“SELECT*FROM info WHERE name='$\u POST[name1]'和country='$\u POST[country1]'”;}非常感谢您在这方面的帮助。您有解决方案吗?如果不是意味着请张贴完整的代码,我会给它的确切解决办法