Php 在数据库表中插入值时,会插入一些值,而不会插入一些值
这是我的php代码。当我输入值时,数据库表中只插入divisionname、divisionchief、month和periods值。Php 在数据库表中插入值时,会插入一些值,而不会插入一些值,php,Php,这是我的php代码。当我输入值时,数据库表中只插入divisionname、divisionchief、month和periods值。 if (isset($_POST['submit'])) { include('includes/connect.php'); for ($i=1; $i<=3; $i++) { $divisionname = $_POST['divisionname']; $divisionchief= $_POST['divisionchief']; $period
if (isset($_POST['submit'])) {
include('includes/connect.php');
for ($i=1; $i<=3; $i++)
{
$divisionname = $_POST['divisionname'];
$divisionchief= $_POST['divisionchief'];
$period = $_POST['period'];
$month = $_POST['month'];
$activityname = $_POST['activityname'.$i];
$unit = $_POST['unit'.$i];
$weightage = $_POST['weightage'.$i];
$per100 = $_POST['per100'.$i];
$per75 = $_POST['per75'.$i];
$per50 = $_POST['per50'.$i];
$perless50 = $_POST['perless50'.$i];
$sql="INSERT INTO workplan_detail(division_name, division_chief, Period, Month, activity_name, Unit, Weightage, per_100, per_75, per_50, per_less50) VALUES ('$divisionname', '$divisionchief', '$period', '$month', '$activityname', '$unit', '$weightage', '$per100', '$per75', '$per50', '$perless50')";
mysql_query($sql);
header("location:workplan.php");
}`
echo"This information has been added to the database.";
}
?>
if(isset($\u POST['submit'])){
include('includes/connect.php');
对于($i=1;$i)
请将这个vardump()函数放在您的网页下方,然后将行
打印vardump($\u POST)
我打赌你会发现那些变量没有定义
函数vardump($var)
{
$bgtable='#9999CC';
$bghead='#CCCCFF';
$bgvalue='#E6E6FF';
$bginfo='#f3ff';
$output=“”;
#类型值和信息
if(is_数组($var)){
#$element=0;
foreach($var as$key=>$current){
if(是_数组($current)){
$output.=“['$key']=>”.gettype($current)
).“.vardump($current)。”;
}
否则{
$output.=“['$key']=>”.gettype($current)
).“当前美元”;
}
#$element++;
}
}
否则{
$output.=''.gettype($var)。”
$var”;
}
$output.='';
返回$output;
}
您需要处理插入错误:
if(!mysql_query($sql)){
echo mysql_error();
}
MySQL扩展被禁止,考虑使用mySQL代替。考虑在变量上使用转义字符串函数。
您可以尝试添加echo$sql 像这样:
$sql="INSERT INTO workplan_detail(division_name, division_chief, Period, Month, activity_name, Unit, Weightage, per_100, per_75, per_50, per_less50) VALUES ('$divisionname', '$divisionchief', '$period', '$month', '$activityname', '$unit', '$weightage', '$per100', '$per75', '$per50', '$perless50')";
echo $sql;
mysql_query($sql);
header("location:workplan.php");
}`
echo"This information has been added to the database.";
这将为您提供查询,您可以尝试按顺序修复无效值。此代码:
$activityname = $_POST['activityname'.$i];
例如,在第一个循环上生成:
$activityname = $_POST['activityname1'];
如果没有来自具有该精确名称的表单的输入,则该值将为空
如果您有一个来自以下表单的输入数组:
<input name="activityname[]" />
然后数组索引将从0开始,您的PHP应该是:
for ($i=0; $i<=2; $i++)
{
$divisionname = $_POST['divisionname'];
$divisionchief= $_POST['divisionchief'];
$period = $_POST['period'];
$month = $_POST['month'];
$activityname = $_POST['activityname'][$i]; //right here
$unit = $_POST['unit'][$i];
//etc, following this pattern...
}
对于($i=0;$inice sql注入漏洞、不推荐的api的良好使用、良好的缩进、良好的回勾!最有可能的$\u POST['activityname1']、$\u POST['activityname2']和$\u POST['activityname3']
不存在。所有其他变量也是如此。如果打开错误报告以显示E_通知错误,您就会知道。附带说明:您有很大的SQL注入机会。切换到使用或是更好的主意,因为mysql扩展非常容易接受各种攻击,并且是官方的ly已弃用。别担心。这只是为了我的作业。顺便说一句,我是一个初学者。你能帮我吗?我已经被困在这里好几个小时了。我不太明白。我在哪里使用这个函数?我在这个表中有一行二进制状态。在批准后,我如何立即将每行的状态从0更改为1?听起来你应该发布一个n这是一个新问题。不过我确实回答了这个原始问题,对吗?如果你能接受我的答案,那就太好了,我也可以帮助你回答下一个问题。@Bishal_bh堆栈溢出的一般过程是,如果有人正确回答了你的问题,你就向上投票,然后单击复选标记图标将他们的答案标记为“已接受”。这是申请表
for ($i=0; $i<=2; $i++)
{
$divisionname = $_POST['divisionname'];
$divisionchief= $_POST['divisionchief'];
$period = $_POST['period'];
$month = $_POST['month'];
$activityname = $_POST['activityname'][$i]; //right here
$unit = $_POST['unit'][$i];
//etc, following this pattern...
}