我正在制作一个从给定数据库和表构建自己的表单。但是,当涉及到插入功能时,我遇到了麻烦。我已经完成了所有字段生成输入,textareas你在一个页面上具有正确名称的东西。现在我需要做的就是将它插入到post上的db中。但是我需要使用implode以格式(this,that,this)重新创建数组,我不知道如何做到这一点。
$resultInsert = mysql_query("SHOW COLUMNS FROM " . $table);
$fieldnames=array();
if (mysql_num_rows($resultInsert) > 0) {
while ($row = mysql_fetch_array($resultInsert)) {
echo $fieldnames[] = $row['Field']; #currently outputting titlebodytextcreated (three fields i have)
}
}
// FORMAT: field_name = $_POST[fieldname]
$values = array('title'=>$_POST['title'],'bodytext'=>$_POST['bodytext']); # need this to be autogenerated by the field names
echo "<br>" . sprintf('INSERT INTO %s (%s) VALUES ("%s")', 'testdb',
implode(', ', array_map('mysql_escape_string', array_keys($values))), implode('", "',array_map('mysql_escape_string', $values)));
// add loop for id to be generated in a hidden field, along with all other excluded fields so that the
// update will process correctly in the insert into phase
答案 0 :(得分:1)
这会有用吗?
$values = array_intersect_key( $_POST, array_flip($fieldnames) );
或者更确切地说,如果您想确保$fieldnames
中的所有值都在$values
中有一个密钥,即使$_POST
中的相应密钥为空:
$values = array_flip($fieldnames);
$values += array_intersect_key( $_POST, $values );