PHP mysql Pdo使用电子邮件和日期作为输入来精确匹配

时间:2018-11-05 21:01:18

标签: php pdo

嗨,我在互联网上找到了一个代码并进行了一些编辑,但是我坚持显示我想要的正确结果..当我键入电子邮件地址时,我得到了正确的结果,但是如果我输入的项目多于1个,我总是得到最后一个一种可以根据电子邮件和日期显示结果吗?

到目前为止,这是我的代码

    <?php

    // php search data in mysql database using PDO`enter code here`
// set data in input text

$id = "";
$reservation_name = "";
$persons = "";
$date = "";
$time = "";
$email = "";
$status= "";

if(isset($_POST['Find']))
{
        // connect to mysql
    try {
        $pdoConnect = new PDO("mysql:host=localhost;dbname=multi_edit","root","");
    } catch (PDOException $exc) {
        echo $exc->getMessage();
        exit();
    }

    // id to search
    $email = $_POST['email'];

     // mysql search query

    $pdoQuery = "SELECT * FROM member WHERE email = :email";

    $pdoResult = $pdoConnect->prepare($pdoQuery);

    //set your id to the query id
    $pdoExec = $pdoResult->execute(array(":email"=>$email));

    if($pdoExec)
    {
            // if id exist 
            // show data in inputs
        if($pdoResult->rowCount()>0)
        {
            foreach($pdoResult as $row)
            {
                $id = $row['id'];
                $reservation_name = $row['reservation_name'];
                $persons = $row['persons'];
                $date = $row['date'];
                $time = $row['time'];
                $status = $row['status'];
            }
        }
            // if the id not exist
            // show a message and clear inputs
        else{
            echo 'No Reservation Found On This Email';
        }
    }else{
        echo 'ERROR Something Is Wrong Try Again';
    }
}


?>

<!DOCTYPE html>

<html>

    <head>

        <title> Search Your Reservation </title>

        <meta charset="UTF-8">

        <meta name="viewport" content="width=device-width, initial-scale=1.0">

    </head>

    <body>

        <form action="search.php" method="post">
<center>
            Please Enter Your Email Address : <br><br><br><input type="text" name="email" value="<?php echo $email;?>"><br><br>

            Reservation Name : <br><input type="text" readonly name="reservation_name" value="<?php echo $reservation_name;?>"><br><br>

            Persons : <br><input type="text" readonly name="persons" value="<?php echo $persons;?>"><br><br>

            Date Y-M-D : <br><input type="text" name="date" value="<?php echo $date;?>"><br><br>

            Time : <br><input type="text" readonly name="time" value="<?php echo $time;?>"><br><br>

            Status : <br><input type="text" readonly name="status" value="<?php echo $status;?>"><br><br>

            <input type="submit" name="Find" value="Find Data">
</center>
        </form>

    </body>

</html>

1 个答案:

答案 0 :(得分:0)

我已经解决了您的需求,如果在表单输入字段中提交,则需要电子邮件(例如foobar@gmail.com)和日期(例如2018-09-23),如果您提交,则返回保留名称。 为简单起见,请注意,我删除了“人”,“时间”和“状态”这三列,但您可以将其添加回去,它不会改变逻辑,因为查找/查询不需要这些字段作为输入

这是我的代码:

<?php
// php search data in mysql database using PDO`enter code here`
// set data in input text


function sqlInitConn ($args) {
    // Initialze connection.
    $serverName = $args["serverName"];
    $userName = $args["userName"];
    $password = $args["password"];
    $dbName = $args["dbName"];

    $conn = new PDO("mysql:host=$serverName;dbname=$dbName", $userName, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    return $conn;
}

// Those variables are for input to mysql.
$idIpt = "";
$reservation_nameIpt = "";
$emailIpt = "";
$dateIpt = "";

// Those variables are for output to front-end.
$idOpt = "";
$reservation_nameOpt = "";
$emailOpt = "";
$dateOpt = "";


if(isset($_POST['find']))
{
    try {
        // Connect to mysql.
        $pdoConnect = sqlInitConn([
            "serverName" => "localhost",
            // Change it to your server name.
            "userName" => "root",
            "password" => "change_it_to__your_password_here_if_your_mysql_need_password",
            "dbName" => "multi_edit",
        ]);
    } catch (PDOException $exc) {
        echo $exc->getMessage();
        exit();
    }

    $emailIpt = $_POST['email'];
    $dateIpt = $_POST['date'];
    $pdoQuery = "SELECT * FROM member WHERE email = :email AND date = :date";
    // Mysql search query

    $pdoResult = $pdoConnect->prepare($pdoQuery);
    $pdoResult->bindValue(":email", $emailIpt);
    $pdoResult->bindValue(":date", $dateIpt);
    $pdoExec = $pdoResult->execute();

    if($pdoExec) {
        // If record exist, show data in inputs
        if($pdoResult->rowCount() > 0) {
            foreach($pdoResult as $row) {
                $idOpt = $row['id'];
                $reservation_nameOpt = $row['reservation_name'];
                $emailOpt = $row['email'];
                $dateOpt = $row['date'];
                break;
                // only get first occurrences (get first matching record) to prevent corrupted data
                // , because same email might wrongly log twice in same day (= same date), like morning and afternoon.).
            }
        }
        else {
            echo 'No Reservation Found On This Email';
            // If the id not exist, show a message and clear inputs
        }
    } else {
        echo 'ERROR Something Is Wrong Try Again';
        // If the id not exist, show a message and clear inputs
    }
}


?>

<!DOCTYPE html>
<html>
    <head>
        <title> Search Your Reservation </title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>
        <form action="" method="post">
        <center>
            <div>
                <p>Please Enter Your Email Address :</p>
                <input type="text" name="email" value="<?php echo $emailOpt;?>">
            </div>
            <div>
                <p>Reservation Name :</p>
                <input type="text" readonly name="reservation_name" value="<?php echo $reservation_nameOpt;?>">
            </div>
            <div>
                <p>Date Y-M-D :</p>
                <input type="text" name="date" value="<?php echo $dateOpt;?>">
            </div>
            <div>
                <input type="submit" name="find" value="Find Data">
            </div>
        </center>
        </form>
    </body>
</html>