我正在尝试使用单个.php页面以基于用户角色的条件MySQLi INSERT。基本上,除了几个字段外,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
}
发生的事情是,无论用户$ _SESSION如何,两个INSERT语句都会执行。一个条目为空白,而另一个条目则基于提交的表单具有正确的数据。
我的表单是相同的,除了几个条件字段不同(基于管理员还是客户端)。
我可以这样做还是需要返回到原始脚本,该脚本具有两个不同的.php页面,其中包含admin和client的INSERT语句,如下所示:
if ($_SESSION['role'] == 'admin')
{
header("Location: admin.php")
}
if ($_SESSION['role'] == 'client')
{
header("Location: client.php")
}
答案 0 :(得分:-1)
您可以这样做。
您具有错误的会话角色集,可以通过放置跟踪轻松找到它,或者您认为正在运行的查询有问题。无论哪种方式,我们都不能仅凭这个例子来说明。
尝试并在两个条件语句中打印出一些数据,以查看其真正作用所在。
答案 1 :(得分:-1)
我不得不退后一会儿来回忆我的想法。有几个错误(在此无法描述)。我现在可以正常工作了(我对switch语句了解了一些)。如果需要删除该线程,请这样做或告诉我如何。谢谢