我可以有一个基于php if语句的条件mysqli插入吗

c86crjj0  于 2021-06-23  发布在  Mysql
关注(0)|答案(2)|浏览(339)

我正在尝试使用一个.php页面来基于用户角色进行有条件的mysqli插入。基本上,除了几个字段外,insert非常相似。这是我的密码:

require 'scripts/config.php'; 

            if ($_SESSION['role'] == 'admin')
                 { 
                $sql = "INSERT INTO aircraft_dataV2 (status, ac_cat, ac_type, faa_id, time_in, date_in, time_out, date_out, services, comments, contact_name, contact_phone, contact_ext, contact_email, email, csr_lsr, created) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";

            if($stmt = mysqli_prepare($link, $sql))
                {
                // Bind variables to the prepared statement as parameters
                mysqli_stmt_bind_param($stmt, "sssssssssssssssss", $status, $ac_cat, $ac_type, $faa_id, $time_in, $date_in, $time_out, $date_out, $services, $comments, $contact_name, $contact_phone, $contact_ext, $contact_email, $email, $csr_lsr, $created);

  ...CODE TO $_REQUEST FORM DATA ...

            if(mysqli_stmt_execute($stmt))
                    {
                        //Redirect to 
                    $aircraft_id = mysqli_insert_id($link);         
                    header("Location: service_confirm.php?aircraft_id=$aircraft_id");
                    } else
                    {
                    echo "ERROR: Could not execute query: $sql. " . mysqli_error($link);
                    }
            } else{
                echo "ERROR: Could not prepare query: $sql. " . mysqli_error($link);
                  }

                }

            if ($_SESSION['role'] == 'client')
                 { 
                SAME as above minus the $csr/lsr and $email fields
                 }

不管用户$\u会话是什么,这两个insert语句都会执行。一项为空,另一项根据提交的表格有正确的数据。
我的表单是相同的,只是有几个条件字段根据admin和client的不同而不同。
我可以这样做吗?还是需要返回到原始脚本,它有两个不同的.php页面,其中包含admin vs client的insert语句,如下所示:

if ($_SESSION['role'] == 'admin')
                 { 
                  header("Location: admin.php")
                 }

            if ($_SESSION['role'] == 'client')
                 { 
                  header("Location: client.php")
                 }
uxhixvfz

uxhixvfz1#

你能做到的。
您可能设置了错误的会话角色集,通过放置跟踪可以很容易地找到该角色集,或者您认为正在运行的查询有问题。不管怎样,单凭这个样本我们都看不出来。
试着在这两个条件语句中打印出一些数据,看看它真正进入了哪个状态。

yquaqz18

yquaqz182#

我不得不往后退一步,回想一下我的想法。有几个错误(这里描述的太多了)。我现在已经开始工作了(我也学了一些switch语句)。如果这个线程需要删除,请这样做或告诉我怎么做。谢谢

相关问题