Jump to content

Recommended Posts

I'm in a quandry.

 

I have a series of records in a table. I'm allowing NULLs on my varchar columns, because the imported data may not have values for some of them. I need to manipulate each record with the end-goal of creating another query which will be used to insert data into another table.

 

The first table, with the NULLS permitted, is the one I'm currently traversing with a 'while loop':

$sql = "select * from " . DB_TBL;
$result = mysql_query($sql);
while ($data = mysql_fetch_assoc($result)) {
//my foreach loop goes here
}

 

Pretty straightforward so far. So, I thought, was my foreach loop:

 


   foreach ($data as $key => $value) {
       if ((strlen($value) != 0)) {
           echo "key: " . $key . ': =' . $value . '<br />';
       } else {
           echo '<br />';
}
}

 

When I run that, I seem to lose the first column, which is never NULL or strlen=0. It just doesn't display.

 

Should this be done another way? Perhaps getting the numrows first, then doing the foreach, incrementing the row inside a for/next loop?

 

thanks in advance for any productive ideas.

Edited by rsleventhal

Try below first and see if the data is actually there in the first place

 

foreach ($data as $key => $value) {
echo "key: " . $key . ': =' . $value . '<br />';
}

Edited by berridgeab

Thanks to all who replied.

 

@berridgeab: yes, all the data is there when I just dump it out like that.

 

@ Jessica: adding trim(), while a good idea and something I've now done, does not affect the output

 

@ManiacDan: I've run the query by hand in shell and all's as expected. The column I'm losing is always the first column and contains only plain text, no HTML.

 

I have a feeling I'm doing something earlier in the code that's affecting the output, so I'll look there and continue debugging. Will post the solution once i find it.

 

Again, my thanks,

-R

There is no "earlier in the code" for this example, you select data and then print it. If you're not showing us your actual code, there's no way we can help you.

 

You say the data is there when you remove the IF check. That implies that your IF check is failing. Inside that IF check, print out "In the if because strlen('{$value}') is zero<br />"; That should work.

 

your thread title says $key, your code says $value. Are you sure you're checking the right variable?

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.