首页 > 解决方案 > 我在 PHP 中使用 JS,由于某种原因,即使 If 不正确,JS 也不会转到 else

问题描述

正如标题所暗示的,下面的代码是 PHP 文件中的一些 JS,由于某种原因,即使 if 不正确,JS 也不会转到 else。在当前状态下,无论哪个 if 语句首先放置都会正确运行,但第二个语句将永远不会触发。该系统的设计目的是在人员 === true 时运行 x 个查询,并在 user == true 时运行 y 个查询

会话.php

    <?php
// mysqli_connect() function opens a new connection to the MySQL server.
$conn = mysqli_connect("localhost", "root", "", "sports world");
session_start();// Starting Session
// Storing Session
$user_check = $_SESSION['login_user2'];
$p = $_SESSION['login_user3'];
?>

<script>
if sessionStorage.getItem('status2') === 'staff') {
    <?php
    // SQL Query To Fetch Information Of User
    $query = "SELECT Username from staff where Username = '$user_check'";
    $ses_sql = mysqli_query($conn, $query);
    $row = mysqli_fetch_assoc($ses_sql);

    $login_session = $row['Username'];


    // SQL Query To Fetch Information Of User
    $query2 = "SELECT StaffCode from staff where Username = '$user_check' AND Password = '$p'";
    $ses_sql2 = mysqli_query($conn, $query2);
    $row2 = mysqli_fetch_assoc($ses_sql2);

    $cust = $row2['StaffCode'];
    $_SESSION['CustCode'] = $cust;


    // SQL Query To Fetch Information Of User
    $query3 = "SELECT StaffGivenName As 'Given Name', StaffSurname As 'Surname' from staff where StaffCode = '$cust'";
    $ses_sql3 = mysqli_query($conn, $query3);
    $row3 = mysqli_fetch_assoc($ses_sql3);

    $name1 = $row3['Given Name'];
    $name2 = $row3['Surname'];
    $_SESSION['Given Name'] = $name1;
    $_SESSION['Surname'] = $name2;


    // SQL Query To Fetch Information Of User
    $queryAccountDeatils = "SELECT StaffDob As 'Date of Birth', StaffGender As 'Gender', StaffAddress1 As 'Address', StaffAddress2 As 'Region', StaffPostCode As 'Post Code', StaffPhone As 'Phone Number', StaffEmail As 'Email', StaffTFN As 'Message Preferences', StaffEmerConName As 'Member Type', StaffEmerConPhone As 'Sports' from staff where StaffCode = '$cust'";
    $ses_sql4 = mysqli_query($conn, $queryAccountDeatils);
    $row4 = mysqli_fetch_assoc($ses_sql4);

    $Dob = $row4['Date of Birth'];
    $Address = $row4['Address'];
    $Gender = $row4['Gender'];
    $Region = $row4['Region'];
    $PostCode = $row4['Post Code'];
    $PhoneNumber = $row4['Phone Number'];
    $Email = $row4['Email'];
    $MessagePref = $row4['Message Preferences'];
    $MemberType = $row4['Member Type'];
    $Sports = $row4['Sports'];
    $_SESSION['Date of Birth'] = $Dob;
    $_SESSION['Address'] = $Address;
    $_SESSION['Gender'] = $Gender;
    $_SESSION['Region'] = $Region;
    $_SESSION['Post Code'] = $PostCode;
    $_SESSION['Phone Number'] = $PhoneNumber;
    $_SESSION['Email'] = $Email;
    $_SESSION['Message Preferences'] = $MessagePref;
    $_SESSION['Member Type'] = $MemberType;
    $_SESSION['Sports'] = $Sports;
    ?>
} else if (localStorage.getItem('status2') === 'user') {
    <?php
    // SQL Query To Fetch Information Of User
    $query = "SELECT Username from login where Username = '$user_check'";
    $ses_sql = mysqli_query($conn, $query);
    $row = mysqli_fetch_assoc($ses_sql);

    $login_session = $row['Username'];


    // SQL Query To Fetch Information Of User
    $query2 = "SELECT CustCode from login where Username = '$user_check' AND Password = '$p'";
    $ses_sql2 = mysqli_query($conn, $query2);
    $row2 = mysqli_fetch_assoc($ses_sql2);

    $cust = $row2['CustCode'];
    $_SESSION['CustCode'] = $cust;


    // SQL Query To Fetch Information Of User
    $query3 = "SELECT CustGivenName As 'Given Name', CustSurname As 'Surname' from customers where CustCode = '$cust'";
    $ses_sql3 = mysqli_query($conn, $query3);
    $row3 = mysqli_fetch_assoc($ses_sql3);

    $name1 = $row3['Given Name'];
    $name2 = $row3['Surname'];
    $_SESSION['Given Name'] = $name1;
    $_SESSION['Surname'] = $name2;


    // SQL Query To Fetch Information Of User
    $queryAccountDeatils = "SELECT CustDob As 'Date of Birth', CustGender As 'Gender', CustAddress1 As 'Address', CustAddress2 As 'Region', CustPostCode As 'Post Code', CustPhone As 'Phone Number', CustEmail As 'Email', CustMsgPref As 'Message Preferences', CustMemberType As 'Member Type', CustSports As 'Sports' from customers where CustCode = '$cust'";
    $ses_sql4 = mysqli_query($conn, $queryAccountDeatils);
    $row4 = mysqli_fetch_assoc($ses_sql4);

    $Dob = $row4['Date of Birth'];
    $Address = $row4['Address'];
    $Gender = $row4['Gender'];
    $Region = $row4['Region'];
    $PostCode = $row4['Post Code'];
    $PhoneNumber = $row4['Phone Number'];
    $Email = $row4['Email'];
    $MessagePref = $row4['Message Preferences'];
    $MemberType = $row4['Member Type'];
    $Sports = $row4['Sports'];
    $_SESSION['Date of Birth'] = $Dob;
    $_SESSION['Address'] = $Address;
    $_SESSION['Gender'] = $Gender;
    $_SESSION['Region'] = $Region;
    $_SESSION['Post Code'] = $PostCode;
    $_SESSION['Phone Number'] = $PhoneNumber;
    $_SESSION['Email'] = $Email;
    $_SESSION['Message Preferences'] = $MessagePref;
    $_SESSION['Member Type'] = $MemberType;
    $_SESSION['Sports'] = $Sports;
    ?>
}
</script>

标签: javascriptphp

解决方案


PHP 在将页面内容发送到浏览器之前由服务器执行,一旦它到达用户的浏览器,您与 HTML 一起发送的任何 JS 都可以执行。

但是,您将无法返回并运行更多 PHP 代码,具体取决于您尝试的 Javascript if 语句的结果。不过,您确实有一些选择。

选项1:

使用 PHP 编写一些JS 表达式或函数,这些表达式或函数将在客户端运行,方法是将echo有效的 JS 表达式放入<scirpt>标签中。但是再次运行您的 MySQL 查询必须首先在服务器端阶段进行。

选项 2:

您还可以使用 AJAX 样式的 JS 调用来调用辅助 PHP 脚本,以将您的结果作为 JSON 或其他一些可消耗格式回显。jQuery 具有 AJAX 函数或查看“Axios”或浏览器原生的“fetch()”。

https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch

选项 3:

如果可以的话,忘记 Javascript 并将 If...Else 写入 PHP 逻辑。


推荐阅读