在php中插入活动会话

时间:2017-01-15 17:59:24

标签: php

如何插入当前会话行" 表名是lodges,会话名称是lodge。

    <?php
session_start();
if (!isset($_SESSION['lodge'])) {
    header("Location:lodge.php");
}
$con=mysqli_connect("localhost","root","pwd","db");

$company_shortbio= mysqli_real_escape_string($con, $_POST['company_shortbio']); 
$company_longbio = mysqli_real_escape_string($con, $_POST['company_longbio']);
$company_location = mysqli_real_escape_string($con, $_POST['company_location']);
$service1 = mysqli_real_escape_string($con, $_POST['service1']);
$service2 = mysqli_real_escape_string($con, $_POST['service2']);
$service3 = mysqli_real_escape_string($con, $_POST['service3']);
$service4 = mysqli_real_escape_string($con, $_POST['service4']);

$sql="UPDATE lodges SET 
company_shortbio='$company_shortbio',company_longbio='$company_longbio',company_location='$company_location',service1='$service1',service2='$service2',service3='$service3',service4='$service4'

"; 

if (!mysqli_query($con,$sql))
  {

      header("Location:lodgeprofile.php?error");
  }




else{

 header("Location:lodgeprofile.php?success");
    exit;
}
?>

数据是插入tabe,但它插入所有行而不是特定的活动session.Please帮助,我是新的php.And我也知道这个代码很容易被注入。这只是一个小赋值。表的主键是lodge_id

2 个答案:

答案 0 :(得分:1)

因为您没有使用条件或限制,查询将更新表中的每一行。

UPDATE table SET (column=value) WHERE condition(s) LIMIT n

条件示例:

$sql = "UPDATE lodges SET company_shortbio='$company_shortbio',company_longbio='$company_longbio',company_location='$company_location',service1='$service1',service2='$service2',service3='$service3',service4='$service4' WHERE somecolumn=$somevalue"; 

LIMIT示例:

$sql = "UPDATE lodges SET company_shortbio='$company_shortbio',company_longbio='$company_longbio',company_location='$company_location',service1='$service1',service2='$service2',service3='$service3',service4='$service4' LIMIT 1";

您还可以在查询中组合WHERE和LIMIT。

答案 1 :(得分:1)

我想在另一段代码中有人将$ _SESSION [&#39; lodge&#39;]设置为当前用户的lodge_id。

在这种情况下,您必须执行以下操作:

$lodge_id=$_SESSION['lodge'];
$sql="UPDATE ... WHERE lodge_id=$lodge_id;";

但是你是对的,这段代码很容易注入。我知道避免注射的最佳方法是使用prepared statements

还有一件事:重定向后,如果$ _SESSION没有&#39; loff&#39;,你应该退出,否则后续代码将被执行。