Php 如何检查是否已下订单
我这里有一件很简单的事情。基本的查询,但当我决定再向前走一步时,我向自己抛出了一条曲线 基本上是这样的:Php 如何检查是否已下订单,php,mysql,validation,Php,Mysql,Validation,我这里有一件很简单的事情。基本的查询,但当我决定再向前走一步时,我向自己抛出了一条曲线 基本上是这样的: 检查用户是否在表单中输入了值 如果不是,则踢出并显示基本错误 如果有,则根据数据库检查该值,以确保该值有效/存在 如果有效/存在,请设置会话变量并转到订单 如果不是,则踢出并显示基本错误 我现在要做的是在那里添加另一个签入,如果用户id存在,那么我需要检查订单状态,如果他们已经下单,那么我想退出并显示一条简单消息,让他们知道他们已经下单并且正在处理。如果他们还没有订购,那么我想继续上面的
- 检查用户是否在表单中输入了值
- 如果不是,则踢出并显示基本错误
- 如果有,则根据数据库检查该值,以确保该值有效/存在
- 如果有效/存在,请设置会话变量并转到订单
- 如果不是,则踢出并显示基本错误
<?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>
除了像Shivan建议的那样为mysqli\ucode>交换mysql\ucode>函数之外,您还应该这样做:
- 退出任何输入-您可以从不信任用户提供的数据,也可以
$employee\u id=mysql\u real\u escape\u字符串($\u POST['employee\u id'])代码>
如果是数字,您也可以执行
$employee\u id=intval($\u POST['employee\u 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
}
停止使用mysql\u query()
!改用MySQLi/PDO。对于您的问题,您可以再添加一个查询进行检查。你有什么困难?谢谢卢卡斯!我只需要做一点调整,并修复我所有的语法错误(该死的大括号,哈哈!),但你的代码工作得非常完美。