Php 在数据库表中插入值时,会插入一些值,而不会插入一些值

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

这是我的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 = $_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...
}