Reputation: 320
I really was searching quite some time but I do not know what to change. My php code gets an array and I want it to insert into a mysqlDB. Problem is that it only runs the foreach loop once. Why is it not running?
public function insert_tags($projektID, $tags) {
print_r($tags);
foreach($tags as $tag)
$this->db->set('name', $tag);
$this->db->insert('tags');
echo $tag;
$tag_ID = $this->db->insert_id();
echo $tag_ID;
if ($tag_ID != 0) {
$this->db->set('id', $projektID);
$this->db->set('tag_ID', $tag_ID);
$this->db->insert('hat_tags');
}
}
It echos:
Array
(
[0] => tag1
[1] => tag2
)
tag2 147
No further error. Thanks for any help!
Upvotes: 1
Views: 1298
Reputation: 4275
You need to enclose them in {} brackets otherwise it will loop the first line next to it. Use the code below
public function insert_tags($projektID, $tags) {
print_r($tags);
foreach($tags as $tag){
$this->db->set('name', $tag);
$this->db->insert('tags');
echo $tag;
$tag_ID = $this->db->insert_id();
echo $tag_ID;
if ($tag_ID != 0) {
$this->db->set('id', $projektID);
$this->db->set('tag_ID', $tag_ID);
$this->db->insert('hat_tags');
}
}
}
Or you can use it with endforeach
public function insert_tags($projektID, $tags) {
print_r($tags);
foreach($tags as $tag):
$this->db->set('name', $tag);
$this->db->insert('tags');
echo $tag;
$tag_ID = $this->db->insert_id();
echo $tag_ID;
if ($tag_ID != 0) {
$this->db->set('id', $projektID);
$this->db->set('tag_ID', $tag_ID);
$this->db->insert('hat_tags');
}
endforeach;
}
Hope this helps you
Upvotes: 2
Reputation: 274
foreach loop needs to be enclosed in braces {} otherwise it will loop only one line after the foreach statement
Upvotes: 4