Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据用户id插入数据_Php_Mysql - Fatal编程技术网

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:)