Hello Mike,

> $row=$dbh->prepare("SELECT contact_id,first_name,last_name,organisation
> FROM tb_contacts  WHERE organisation ILIKE ?");

[...]

> while(($id,$first_name,$last_name,$organisation) = $row->fetchrow_array())
{

[...]

> $row=$dbh->prepare("SELECT id,contact_id,type_of_contact,priority FROM
> tb_contact_role  WHERE contact_id ILIKE ?");

[...]

>}

[...]

> This only produces on record at the top-level, if I dont have the select
> inside the loop, then all matching records appear
> 
> Anyone any idea where I am going wrong

You are using the same variable as the statement handle for both queries
($row). In effect, since your second SELECT probably returns only one row
(probably the detail of the contact you got in the first SELECT), the
enclosing while ends afterwards because there are no more rows to get from
that statement handle (the second SELECT).

I would suggest you declare a new variable inside your while, say $contact.
Something like this:

my $contact = $dbh->prepare(qq[SELECT id, contact_id, type_of_contact,
priority 
                                 FROM tb_contact_role 
                                WHERE contact_id ILIKE ?]);

I also suggest better indentation and whitespace usage in your code. That
will get very hard to read very fast...

Hope that helps,

J-S

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>


Reply via email to