我有多个命名键,每个键都被赋予0到5之间的值。
我创建了一个数组和数组过滤器,只保留已赋值为>的键。 0.从数组中删除任何0值对。
我需要的是在同一个表中插入键名和分配为单独字段的值的方法。
列名是skill_name和value。
提交后的数组:
Array ( [Academics] => 2 [Animal_Ken] => 3 [Athletics] => 2 [Awareness] => 0 [Blood_Sense] => 0 [Brawl] => 0 [Craft] => 0 [Dodge] => 0 [Empathy] => 0 [Enigma] => 0 [Etiquette] => 0 [Expression] => 0 [Finance] => 0 [Firearms] => 0 [Intimidation] => 0 [Investigation] => 0 [Larceny] => 0 [Law] => 0 [Leadership] => 0 [Linguistics] => 0 [Malkavian_Time] => 0 [Medicine] => 0 [Melee] => 0 [Occult] => 0 [Performance] => 0 [Politics] => 0 [Science] => 0 [Scrounge] => 0 [Security] => 0 [Stealth] => 0 [Streetwise] => 0 [Subterfuge] => 0 [Survival] => 0 [submit_skills] => Add Skills )
过滤后的数组:
Array ( [Academics] => 2 [Animal_Ken] => 3 [Athletics] => 2 )
现在我需要为每个数组索引插入skill_name = key,value = value。
有什么想法吗?
修改
在接受了我的建议后,一切似乎都正常工作 - 是的。
现在我遇到的问题是,名称中有空格的任何键现在都默认为下划线。
例如:动物肯 - > Animal_Ken ..由于这个原因,数据库拒绝插入。
任何方法都可以去除下划线并将其留作空格?
答案 0 :(得分:4)
使用foreach并包含密钥。
PDO参数化查询的示例:
$stmt = $db->prepare("INSERT INTO table(skill_name, value) VALUES(:skill_name,:value)");
foreach($myArray as $key => $value)
{
// insert: $key = Academics, $value = 2
$stmt->execute(array(':skill_name ' => $key, ':value' => $value));
}
答案 1 :(得分:1)
正如MrCode所说,foreach是要走的路。请参阅下面使用内置mysqli_query PHP函数的过程方法。
// start building query
$q = "INSERT INTO table (skill_name, value) VALUES";
// loop through array, adding values to query
foreach($array as $key => $value) {
$q .= " ('$key', $value),";
}
// remove the last comma
$q = substr($q, 0, -1);
// run query
mysqli_query($your_db_connection, $q);
答案 2 :(得分:0)
找到了我编辑的答案。
function fixArrayKey(&$arr)
{
$arr=array_combine(array_map(function($str){return str_replace("_"," ",$str);},array_keys($arr)),array_values($arr));
foreach($arr as $key=>$val)
{
if(is_array($val)) fixArrayKey($arr[$key]);
}
}
向Passerby提供道具,以便在找到here的相关文章中发布此内容: