Php 条件未为变量赋值

Php 条件未为变量赋值,php,mysql,variables,Php,Mysql,Variables,如果条件满足,我将尝试为变量赋值。但是,php仍然没有设置值。我做错了什么 以下是我的php代码: if(isset($_POST['submit'])) { if (isset($_POST['unit'])) { $unit = $_POST['unit']; $query = search_by_unit($table, $unit); } } else if(!isset($_POST['submit'])){ $query = select_a

如果条件满足,我将尝试为变量赋值。但是,php仍然没有设置值。我做错了什么

以下是我的php代码:

if(isset($_POST['submit'])) {
    if (isset($_POST['unit'])) {
    $unit = $_POST['unit'];
    $query = search_by_unit($table, $unit);
    }
} else if(!isset($_POST['submit'])){
     $query = select_all($table);
}
$result = mysqli_query($connection, $query);
当我在设置unit control后提交表单时,它仍然运行select all功能

以下是功能:

function select_all($table_name){
      return "SELECT * FROM {$table_name}";
 }

function search_by_unit($table_name,$unit){
      return "SELECT * FROM {$table_name} WHERE unit = '{$unit}'";
 }

看起来你做的检查比你真正需要的或可能想要的要多。我将此代码简化为:

if (isset($_POST['unit'])) {
    $unit = $_POST['unit'];
    $query = search_by_unit($table, $unit);
}
else {
    $query = select_all($table);
}

这样,如果设置了
$\u POST['submit']
,但未设置
$\u POST['unit']
,则仍会有
$query

的值。检查提交按钮值根本不是一个好做法。您必须直接检查
表单Posted
值,因此代码应如下所示:-

if (isset($_POST['unit'])){
    $unit = $_POST['unit'];
    $query = search_by_unit($table, $unit);
}else{
    $query = select_all($table);
}

永远不要检查submit按钮值,直接检查表单值。它起作用了。谢谢你让它工作了,但是大多数时候测试提交的问题都源于没有为提交按钮设置名称属性。事实上,表单中没有提交的输入。