我有这样的代码
<?php
include "assets/config/connect.php";
foreach( $_POST['nim'] as $nim ){
$kode_mk= $_POST['kode_mk'] ;
$nilai= $_POST['nilai'] ;
$tahun_akademik= $_POST['tahun_akademik'] ;
$sql = " INSERT INTO nilai (nim, kode_mk, nilai, tahun_akademik, id_nilai) VALUES ('$nim', '$kode_mk', '$nilai', '$tahun_akademik', NULL) ";
if (!mysql_query($sql)){
die('Error: ' . mysql_error());
}
}
?>
但结果与我的预期不一样
这是结果
请帮帮我
答案 0 :(得分:0)
因此假设kode_mk, nilai, tahun_akademik
是$_POST
中的所有数组,您试图将数组的对象作为字符串插入。首先使用类似implode()的函数将数组转换为字符串。
$array = array('hi', 'my', 'name', 'is');
$string = implode(',', $array); // string = 'hi,my,name,is'
Implode的工作原理如下implode(glue, array)
,胶水是一个字符串,插入数组的每个元素之间,以字符串形式分隔它们。您可以使用explode(delimiter, string)
将字符串反转为数组!
<?php
include "assets/config/connect.php";
foreach( $_POST['nim'] as $nim ){
$kode_mk= implode(', ', $_POST['kode_mk']);
$nilai= implode(', ', $_POST['nilai']);
$tahun_akademik= implode(', ', $_POST['tahun_akademik']);
$sql = " INSERT INTO nilai (nim, kode_mk, nilai, tahun_akademik, id_nilai) VALUES ('$nim', '$kode_mk', '$nilai', '$tahun_akademik', NULL) ";
if (!mysql_query($sql)){
die('Error: ' . mysql_error());
}
}
?>
$_POST['nim']
,但是为数据库的列提取相同的$ _POST值。$_POST
变量答案 1 :(得分:0)
$kode_mk = $_POST['kode_mk'];
$nilai = $_POST['nilai'];
$tahun_akademik = $_POST['tahun_akademik'];
所有变量都是数组,而不是你期望的字符串,你应该
var_dump($_POST);
查看POST数组的整个结构
答案 2 :(得分:0)
您必须向我们展示您的输入数据。您可以使用print_r()
或var_dump()
:
print_r($_POST);
从它的外观来看,你的表单输入是数组(复选框?),你需要将它们一起拉成一个字符串或单独使用它们。
此外,如果其值没有变化,则没有理由继续在循环内收集POST值。将它们拉出环路。
最后,不推荐使用mysql_扩展,并且非常不鼓励 - 您不应该使用它来编写新代码。在进行任何插入之前,您还需要验证和清理数据。最简单的方法是参数化查询。