удаление последней запятой из строки 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]."',";
}
}
rtrim($sql,',');
$sql .= ";";

Почему бы не избавиться от последней запятой?

это продолжает печатать это:

INSERT INTO top SET one = 'inner one',two = 'inner two',;

1

Решение

Вы должны назначить rtrim в $sql как это:

$sql = trim($sql, ",");
3

Другие решения

Лучше использовать 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'
1

Вы забыли перезаписать переменную $ 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 .= ";";
0
По вопросам рекламы [email protected]