我知道我的表包含行但我的查询返回0的结果。如何解决这个问题?

时间:2017-05-27 17:04:02

标签: php html mysql database mysqli

这是一个学校作业,我无法弄清楚我哪里出错了。一些援助将不胜感激。我的代码是PHP和HTML的混合,它利用表单将条目输入到我的数据库中的表中。正在输入表单和条目,但是当我执行返回条目功能以查看表格中的所有条目时,没有任何内容返回。

以下是我目前使用的代码:

<?php

if(isset($_POST['submit'])){

    //getting timezone data for registration timestamp
    $timezone = date_default_timezone_set('America/New_York');

    //define username and passowrd according to what user entered
    $userFName = $_POST['fname'];
    $userLName = $_POST['lname'];
    $userCity = $_POST['city']; 
    $userEmail = $_POST['email'];
    $regDate = date(format,timestamp);

    // Establishing Connection with Server by passing server_name, user_id and password as a parameter
    $conn = mysqli_connect("localhost", "root", "root");
    //$conn2 = mysqli_connect("localhost", "root", "root", "progAssignment2");

    //to protect mySQL injection for Security purposes
    $userFName = stripslashes($userFName);
    $userFName = mysqli_real_escape_string($conn, $userFName);      
    $userLName = stripslashes($userLName);
    $userLName = mysqli_real_escape_string($conn, $userLName);
    $userCity = stripslashes($userCity);
    $userCity = mysqli_real_escape_string($conn, $userCity);    
    $userEmail = stripslashes($userEmail);
    $userEmail = mysqli_real_escape_string($conn, $userEmail);

    //select my desired database
    $db = mysqli_select_db($conn, 'progAssignment2');   

    //if user submits form, insert new data into table and echo success
    $sql = "INSERT INTO MyGuests (firstname, lastname, city, email, reg_date) 
        VALUES ('$userFName', '$userLName', '$userCity', '$userEmail', '$regDate');";

    if (mysqli_query($conn, $sql)) {
        echo "Your form has been successfully submitted!";
    } else {
        echo "Error updating record: " . mysqli_error($conn);
    };

    //selecting data from mySQL database
    $query = "SELECT * FROM MyGuests";
    $result = mysqli_query($conn, $query);

};
?>

<!DOCTYPE html>
<html>
<head>
<title>Programming Assignment 3 - Isaiah Duncan</title>
</head>
<body>

<header></header>

<nav></nav>

<section>

    <h1>Insert Data Form</h1>

    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">

        First Name:<br>
        <input type="text" name="fname" value="" required/><br><br>

        Last Name:<br>
        <input type="text" name="lname" value="" required/><br><br>

        City:<br>
        <input type="text" name="city" value="" required/><br><br>

        Email:<br>
        <input type="text" name="email" value="" required/><br><br>

        <input type="submit" name="submit" value="Submit" />

    </form>

</section>

<section>

    <h1>Results</h1>

    <?php

    //check if (more than zero) rows are returned. if so, loop through and display
    if (mysqli_num_rows($result) > 0) {
        //output data of each row
        while($row = mysqli_fetch_assoc($result)) {
            echo "id: " . $row["id"] . " - FirstName: " . $row["firstname"] . " - LastName: " 
                . $row["lastname"] . " - City: " . $row["city"] . " - Email: " . $row["email"] . "<br>";
        };
    }else{
        echo "0 results" . mysqli_error($conn);
    };

    ?>

    <?php echo "There are " . mysqli_num_rows($result); ?>

</section>

<?php mysqli_close($conn); ?>

</body>
</html>

1 个答案:

答案 0 :(得分:0)

据我所知,我想你想看到你第一次访问页面时先前插入的所有记录。如果是这种情况,您需要在if语句之外获取$ result。 if语句只会在您提交表单时执行。例如,在if语句之外(右下方),输入:

 $conn = mysqli_connect("localhost", "root", "root");
 $db = mysqli_select_db($conn, 'test');
 $query = "SELECT * FROM MyGuests";
 $result = mysqli_query($conn, $query);

每次访问该页面时都应运行上述查询。如果有任何结果,则应列出。