我有一个这样的数据库设置:
我有一个php网站,其中包含使用以下语句提交数据的表单:
$sql="INSERT INTO tasks (main_task, subtask, start, end)
VALUES
('$_POST[main_task]','$_POST[subtask]','$_POST[start]','$_POST[end]')";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
header("Location: xxx");
mysqli_close($con);
如何设置它以便根据id_user提交数据?
我认为我必须使用WHERE语句,或者最好在这种情况下使用外键而不是主键?
非常感谢。
答案 0 :(得分:0)
首先:你应该像那样逃避你的价值
$maintask = mysqli_real_escape_string($_POST['main_task']);
and so on with other variables.
第二次使用此查询并将user_id插入其列。
$sql="INSERT INTO tasks (main_task, subtask, start, `end`, user_id)
VALUES
('$maintask',.....other escaped variables ... ,$userid_variable
";
答案 1 :(得分:0)
您还需要插入用户ID。没有用户ID,您无法识别哪个用户的任务。
您可以使用session
。
试试这样:
当用户登录您的登录页面时,将用户ID设置为会话变量,如下所示:
session_start();
$_SESSION['user_id'] = "current_login_user_id";
和本页:
session_start();
$strMainTask = mysqli_real_escape_string($_POST['main_task']);
$strSubTask = mysqli_real_escape_string($_POST['subtask']);
$strStart = mysqli_real_escape_string($_POST['start']);
$strEnd = mysqli_real_escape_string($_POST['end']);
$intUser = mysqli_real_escape_string($_SESSION['user_id']); //get current user id from session variable
$sql="INSERT INTO `tasks` (`main_task`, `subtask`, `start`, `end`,`user_id`)
VALUES
('$strMainTask','$strSubTask','$strStart','$strEnd',$intUser)";
if (!mysqli_query($con,$sql))
{
die('Error: ' . mysqli_error($con));
}
header("Location: xxx");
mysqli_close($con);
这应该是有道理的:)