Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

I'm exploding a comma separated list into a variable named $tagArray and trying to write those values into incrementing rows of a table.

The code below works in so much as it creates the appropriate number of rows in my table but it only writes the first letter of the comma separating string (ie. if the string reads as "one, two, three", "o" is written in the first row and the remaining two rows have a blank value for column "blog_tag":

$tagInput = $_POST["blog_tags"];
$tagArray = explode(",",$tagInput);

$sql_2 = "INSERT INTO blog_tags (blog_tag, blog_id)
VALUES ";

$valuesArray = array();
foreach($tagArray as $row){
$tag = mysqli_real_escape_string($conxn, $row['blog_tag']);
$valuesArray[] = "('$tag','$lastID')";
}

$sql_2 .= implode(',', $valuesArray);

if (!mysqli_query($conxn,$sql_2)) {
die('Error: ' . mysqli_error($conxn));
}

This is spaghetti pieced together from various searches here and it's getting close but I can't figure out where it's grabbing just that first letter of the string.

share|improve this question
    
Is $tagInput = $_POST["blog_tags"]; actually a comma separated list? Also what is the output of print_r($tagArray)? –  JakeGould May 3 at 5:12
    
"This is spaghetti pieced together from various searches here" This is probably the real underlying issue. You should instead use examples to learn how to do things, and actually understand the code you're copy/pasting. –  Jonathon Reinhart May 3 at 5:13
    
And that's precisely what I'm trying to do. –  user3053484 May 3 at 5:14
    
Hey again, Jake. Here's the answer to your question when "one, two, three" are inputted via text field: Array ( [0] => one [1] => two [2] => three ) –  user3053484 May 3 at 5:15
    
+1, nice question –  Sagar Panchal May 3 at 6:13

2 Answers 2

up vote 0 down vote accepted

Explode doesn't create associative arrays

$tag = mysqli_real_escape_string($conxn, $row); //instead of $row['blog_tag']
share|improve this answer

just replace your foreach with this for inserting values of array

foreach($tagArray as $row){
  $a=mysqli_real_escape_string($row)
$sql_2 = "INSERT INTO blog_tags (blog_tag, blog_id) VALUES 
  ('$a','$lastID') ";
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.