为数组插入php失败

时间:2013-04-09 10:35:57

标签: php arrays

我有问题。当我向mysql数据库提交没有任何内容时。 matric可以与不同的证书名称相同。实际上,我尝试使用数组,但我无法配置它...请帮帮我

<html>
<head>
<script language="javascript">
fields = 0;
function addInput() {
if (fields != 10) {
document.getElementById('text').innerHTML += "<br/><input type='text' name='cer[]' size='30' />";

fields += 1;

} else {
document.getElementById('text').innerHTML += "<br />Maximum 10 fields allowed.";
document.form.add.disabled=true;
}
}
</script>
</head>
<body>
<form action="" method="post"> 
<div id="text"><p>matric</p> 
  <input type="text" name="matric" size="30" /> 
 <div id="text"><p>Certificate name</p> 
  <input type="text" name="cer[]" size="30" /> 
  <br /> 
 <input type="button" onclick="addInput()" name="add" value="Add input field" />
 <input type="submit" value="Submit" name="sumbit"/>
 </div> 
</form> 
<?php
include 'dbconnect.php';
if (isset($_POST['submit'])){

$Matric = addslashes($_POST['Matric']);
$Cer_name = addslashes($_POST['cer[]']);

if(!empty($Cer_name)){
$query = "INSERT INTO certificate (Matric,Cer_name) VALUE ('$Matric','$Cer_name')";
$result = mysql_query($query);
}
}
?>
</body>
</html>  

1 个答案:

答案 0 :(得分:1)

我想db表中的列Cer_name必须是varchar类型。而你试图存储完整的阵列。因此,更好的方法是尝试以逗号分隔保存证书。

$Cer_name = addslashes(implode(',', $_POST['cer']));
$query = "INSERT INTO certificate (Matric,Cer_name) VALUE ('$Matric','$Cer_name')";
$result = mysql_query($query) or die(mysql_error());

注意: Please, don't use mysql_* functions in new code。它们不再被维护and are officially deprecated。请参阅red box?转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。如果您选择PDO here is a good tutorial