Php 根据用户id插入数据
我的数据库设置如下:Php 根据用户id插入数据,php,mysql,Php,Mysql,我的数据库设置如下: session_start(); $_SESSION['user_id'] = "current_login_user_id"; 我有一个php网站,其表单使用以下语句提交数据: $sql="INSERT INTO tasks (main_task, subtask, start, end) VALUES ('$_POST[main_task]','$_POST[subtask]','$_POST[start]','$_POST[end]')"; if (!mysql
session_start();
$_SESSION['user_id'] = "current_login_user_id";
我有一个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\u用户提交数据
我想我必须使用WHERE语句,或者在这种情况下最好使用外键,而不是主键
非常感谢 首先:你应该像那样逃避你的价值观
$maintask = mysqli_real_escape_string($_POST['main_task']);
and so on with other variables.
Second使用此查询并在其列中插入用户id
$sql="INSERT INTO tasks (main_task, subtask, start, `end`, user_id)
VALUES
('$maintask',.....other escaped variables ... ,$userid_variable
";
您还需要插入用户id。没有用户id,您无法识别哪个用户的任务 您可以使用
会话
。
试着这样做:当用户在登录页面中登录时,将用户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);
这应该是有意义的:)如果用户已登录,您可以在会话中添加id\u用户,并使用它验证webrequest是否经过身份验证。有了这个,你可以重用PK字段的会话值……你应该阅读sql注入和准备好的语句。神奇地将
mysql\uu
更改为mysqli\u
并不能修复你巨大的安全缺陷,即sql注入。很抱歉,这是一个痛苦的问题,但是mysqli\u real\u escape\u string
需要两个参数(我建议用事先准备好的语句来代替)而且end
不是一个保留词……我的痛苦:)。upadted:)