Reputation: 8961
Can't seem to get rtrim to work and I don't understand why:
$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 .= ";";
Why would this not get rid of the last comma?
it keeps printing out this:
INSERT INTO top SET one = 'inner one',two = 'inner two',;
Upvotes: 1
Views: 267
Reputation: 1764
You forgot to overwrite $sql variable with rtrim result
$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 .= ";";
Upvotes: 0
Reputation: 12039
Better way is to use implode()
. Example:
$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;
}
Output:
INSERT INTO top SET one='inner one',two='inner two'
Upvotes: 1
Reputation: 59681
You have to assign the rtrim
to $sql
like that:
$sql = trim($sql, ",");
Upvotes: 3