如何插入当前会话行" 表名是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
答案 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;,你应该退出,否则后续代码将被执行。