Кажется, не получается заставить работать, и я не понимаю, почему:
$array = array("top" => array("one" => "inner one", "two" => "inner two"));
foreach (array_keys($array) as $key) {
$form[$key] = array();
$sql = "INSERT INTO $key SET ";
foreach (array_keys($array[$key]) as $field) {
array_push($form[$key], $field);
$sql .= $field." = '".$array[$key][$field]."',";
}
}
rtrim($sql,',');
$sql .= ";";
Почему бы не избавиться от последней запятой?
это продолжает печатать это:
INSERT INTO top SET one = 'inner one',two = 'inner two',;
Вы должны назначить rtrim
в $sql
как это:
$sql = trim($sql, ",");
Лучше использовать implode()
, Пример:
$array = array("top" => array("one" => "inner one", "two" => "inner two"));
foreach($array as $key=>$val){
$form = array();
$sql = "INSERT INTO $key SET ";
foreach ($val as $k=>$field) {
array_push($form, $k."='".$field."'");
}
$sql .= implode(",",$form);
//echo $sql;
}
Выход:
INSERT INTO top SET one='inner one',two='inner two'
Вы забыли перезаписать переменную $ sql результатом rtrim
$array = array("top" => array("one" => "inner one", "two" => "inner two"));
foreach (array_keys($array) as $key) {
$form[$key] = array();
$sql = "INSERT INTO $key SET ";
foreach (array_keys($array[$key]) as $field) {
array_push($form[$key], $field);
$sql .= $field." = '".$array[$key][$field]."',";
}
}
$sql = rtrim($sql,',');
$sql .= ";";