【发布时间】:2019-11-19 20:26:23
【问题描述】:
我正在创建一个 php 网站,人们可以在其中获得作业帮助。第一步,用户注册自己或者如果他们已经有一个帐户,他们将登录并被重定向到另一个页面,在那里他们可以创建关于分配的订单。数据库中有两个表。一种是保存注册信息的用户信息用户ID(自动递增),姓名,电子邮件,密码等。
另一个表是订单信息,其中包括有关分配的详细信息。我已将这些表与用户 ID 链接为订单信息表中的外键。我通过帖子将登录信息带到下一页,用户在其中输入订单信息,然后我想将数据连同外键用户 ID 一起提交到订单信息表中。
<?php
$conn = new mysqli('localhost', 'root', '', 'db' );
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$email=$_POST['email'] ; //from previous login page
$getid="SELECT UserID,Name from userinfo WHERE email = '$email' ";
$result = $conn->query($getid);
if ($result->num_rows > 0) {
while($row = $result->fetch_assoc()) {
$id= $row["UserID"];
}
}
if(isset($_POST['submit'])){
$id= $_SESSION['id'];
$type= $_POST['type'];
$level= $_POST['level'];
$subject= $_POST['subject'];
$topic= $_POST['topic'];
$page= $_POST['page'];
$detail= $_POST['detail'];
$day= $_POST['day'];
$refer= $_POST['refer'];
$referstyle= $_POST['referstyle'];
$sql="INSERT INTO OrderInfo (UserID, PaperType, AcademicLevel, Subject, Topic, Detail, Pages, Referrence, ReferrenceStyle, Urgency)
VALUES ('$id','$type', '$level', '$subject','$topic','$detail', '$page','$refer', '$referstyle', '$day' )";
if ($conn->query($sql) === TRUE ) {
echo "";
}
else {
echo " <br>Error: " . "<br>" . $conn->error;
}
}
?>
但问题是当我点击提交时,之前的值被删除,未定义的索引“email”错误被显示,并且数据没有插入到 orderinfo 表中。提交表单后如何保留 $email 和 $id 变量?我尝试过使用 Sessions,但它也不起作用。
【问题讨论】:
-
使用会话,将值存储在会话中
-
警告:您对SQL Injections 持开放态度,应该使用参数化的prepared statements,而不是手动构建查询。它们由PDO 或MySQLi 提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行,you are still in risk of corrupting your data。 Escaping is not enough!
标签: php mysql variables session