【问题标题】:How to check if an order has been placed如何检查是否已下订单
【发布时间】:2015-12-27 18:50:45
【问题描述】:

我在这里有一件很简单的事情。基本查询,但是当我决定更进一步时,我向自己投掷了一条曲线。

基本上是这样的:

  • 检查用户是否在表单中输入了值
  • 如果没有,请退出并显示基本错误
  • 如果他们这样做了,则根据数据库检查该值以确保它有效/存在
  • 如果有效/存在,请设置会话变量并进入订单
  • 如果没有,请退出并显示基本错误

我现在要做的是在那里添加另一个签到,如果用户 ID 存在,那么我需要检查订单状态,如果他们已经下订单,那么我想踢出并显示一条简单的消息让他们知道他们已经下订单并且正在处理中。如果他们还没有订购,那么我想继续上面的订购单。

数据库有一个名为“ordered”的字段,如果他们已订购,则为 1,如果尚未订购,则为 0。

这是我的代码,我已经尝试了几件事,但它一直在爆炸:

    <?php
    session_start();
    $db_host = 'localhost';
    $db_username = 'xxxxxx';
    $db_password = 'xxxxxxxx';
    $db_name = 'xxxxxxxx';

    mysql_connect( $db_host, $db_username, $db_password) or die(mysql_error());
    mysql_select_db($db_name); 

    if ($_SERVER['REQUEST_METHOD'] == "POST") {
        /** Check whether the user has filled in the text field "employee_id" */
        if ($_POST['employee_id'] == "") {
            $IdIsEmpty = true;
        }else{ 
            $employee_id = $_POST['employee_id'];  
            if(mysql_num_rows(mysql_query("SELECT employee_id FROM TABLE_2         WHERE         employee_id = '$employee_id'"))){
                // if userid exists
                $_SESSION['emp_id'] = $employee_id;
                header('Location: orderform.php');
            exit;
            }
            $IdNotFound = true;
        }
    }?>

    <head>
    </head>
    <body>
    <b>Please enter your Employee ID: </b><br><br>
    <form class="" action="index.php" method="post" enctype=
    "multipart/form-data" name="test_form" id="test" accept-charset=
    "utf-8"><input type="text" name="employee_id">
        <?php
        /** Display error messages if "employee_id" field is empty or if ID does not         exist */
        if ($IdIsEmpty) {
            echo ("<br>");
            echo ("<b>Enter your employee ID, please!</b>");
            echo ("<br>");
        }?>
        <?php
        /** Display error messages if "employee_id" field is empty or if ID does not exist */
        if ($IdNotFound) {
            echo ("<br>");
            echo ("<b>Your employee ID not found!</b>");
            echo ("<br>");
        }?>

        <input type="submit" value="Submit">
    </form>
</body>
</html>

【问题讨论】:

  • 停止使用mysql_query()!改用 MySQLi/PDO。对于您的问题,您可以再添加 1 个查询来检查。你有什么困难?

标签: php mysql validation


【解决方案1】:

除了像 Shivan 建议的那样将 mysql_ 函数替换为 mysqli_ 之外,您还应该这样做:

  • 转义任何输入 - 你不能永远相信用户提供的数据,所以要这样做
    $employee_id = mysql_real_escape_string($_POST['employee_id']);
    如果是数字,你也可以这样做
    $employee_id = intval($_POST['employee_id']);
    使用输入时请记住这一点。

  • 现在解决您的问题:

只需在同一查询中选择您的 ordered 字段:

$order_qry = mysql_query("
    SELECT employee_id, ordered 
    FROM TABLE_2 WHERE employee_id = '$employee_id'
");
if(mysql_num_rows($order_qry)) {
    $order = mysql_fetch_object($order_qry);
    if( ! $order->ordered) { // If not ordered
        // ... do something
    } else { // If already ordered
    // ... tell the client
    }
} else {
// No record found ... error message here
}

【讨论】:

  • 谢谢卢卡斯!只需要稍微调整一下并修复我所有的语法错误(该死的花括号哈哈!)但是你的代码运行完美。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多