Re: Query problem in Perl
Hi, You need to use two separate database and statement handles - you can only have one active query per handle. eg. $dbh1 = DBI-connect(...); $dbh2 = DBI-connect(...); $sth1 = $dbh1-prepare( ... ); $sth1-execute(...); while ( $sth1-fetch() ) { $sth2 = $dbh2-prepare( ... ); $sth2-execute(...); while ( $sth2-fetch() ) { } } On Sat, 2002-08-31 at 20:23, Almar van Pel wrote: Hello, I was trying to create a simple perl program, where my domains where listed followed by there DNS records. But It loops once, and then ends with error DBD::mysql::st fetch failed: fetch() without execute() at test.cgi line 61. I thougt this was the easyest way to do so. But no.. Does anyone have any experience with these kind of sub-statements? $dbh = DBI-connect(DBI:mysql:database=$db_database;host=$db_host, $db_user, $db_pw) || db_error(Databaseverbinding niet gemaakt: $DBI::errstr); $sql = select domain from bind_dns_header; $sth = $dbh-prepare($sql)|| error(Kan het statement niet voorbereiden: $dbh-errstr); $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$domain); while ($sth-fetch()) { # line 61 print $domain with the following recordsbr \n; $sql2 = select dnsrecord_id from bind_dns_item where domain = '$domain'; $sth = $dbh-prepare($sql2)|| error(Kan het statement niet voorbereiden: $dbh-errstr); $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$dnsrecord_id); while ($sth-fetch()) { print Record: $dnsrecord_id \n; } } $sth-finish(); Regards, Almar - Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail [EMAIL PROTECTED] To unsubscribe, e-mail [EMAIL PROTECTED] Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php - Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail [EMAIL PROTECTED] To unsubscribe, e-mail [EMAIL PROTECTED] Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
Re: Query problem in Perl
On Mon, 2002-09-02 at 11:37, Harald Fuchs wrote: In article 1030961610.8175.5.camel@pascal, Martin Waite [EMAIL PROTECTED] writes: Hi, You need to use two separate database and statement handles - you can only have one active query per handle. eg. $dbh1 = DBI-connect(...); $dbh2 = DBI-connect(...); $sth1 = $dbh1-prepare( ... ); $sth1-execute(...); while ( $sth1-fetch() ) { $sth2 = $dbh2-prepare( ... ); $sth2-execute(...); while ( $sth2-fetch() ) { } } Nope. You can have multiple active statement handles per database handle. Harald is correct (- thanks), but you still need a separate statement handle for the query inside the loop: $dbh1 = DBI-connect(...); $sth1 = $dbh1-prepare( ... ); $sth1-execute(...); while ( $sth1-fetch() ) { $sth2 = $dbh1-prepare( ... ); $sth2-execute(...); while ( $sth2-fetch() ) { } } - Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail [EMAIL PROTECTED] To unsubscribe, e-mail [EMAIL PROTECTED] Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
Re: Query problem in Perl
Hello! Almar van Pel wrote: Hello, I was trying to create a simple perl program, where my domains where listed followed by there DNS records. But It loops once, and then ends with error DBD::mysql::st fetch failed: fetch() without execute() at test.cgi line 61. I thougt this was the easyest way to do so. But no.. Does anyone have any experience with these kind of sub-statements? $dbh = DBI-connect(DBI:mysql:database=$db_database;host=$db_host, $db_user, $db_pw) || db_error(Databaseverbinding niet gemaakt: $DBI::errstr); $sql = select domain from bind_dns_header; $sth = $dbh-prepare($sql)|| error(Kan het statement niet voorbereiden: $dbh-errstr); $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$domain); while ($sth-fetch()) { # line 61 *look at the name of the statement handle above* print $domain with the following recordsbr \n; $sql2 = select dnsrecord_id from bind_dns_item where domain = '$domain'; $sth = $dbh-prepare($sql2)|| error(Kan het statement niet voorbereiden: $dbh-errstr); Here is your problem! You overwrite the $sth which you want to use in the outer while. Use a different variable for the inner handle. In the inner while you already fetched all rows for sth returning to the next outer loop will fail. $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$dnsrecord_id); while ($sth-fetch()) { print Record: $dnsrecord_id \n; } } $sth-finish(); Greetings Ralf -- Ralf Narozny Besuchen Sie uns auf der DMS-Expo. SAP, Dokumenten- management oder das komplette Office ins Portal einbinden? Wir zeigen es Ihnen - vom 3. bis 5.9. auf der Messe Essen Halle 3, Stand 3255 SPLENDID Internet GmbH Co KG Skandinaviendamm 212, 24109 Kiel, Germany fon: +49 431 660 97 0, fax: +49 431 660 97 20 mailto:[EMAIL PROTECTED], http://www.splendid.de - Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail [EMAIL PROTECTED] To unsubscribe, e-mail [EMAIL PROTECTED] Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
Query problem in Perl
Hello, I was trying to create a simple perl program, where my domains where listed followed by there DNS records. But It loops once, and then ends with error DBD::mysql::st fetch failed: fetch() without execute() at test.cgi line 61. I thougt this was the easyest way to do so. But no.. Does anyone have any experience with these kind of sub-statements? $dbh = DBI-connect(DBI:mysql:database=$db_database;host=$db_host, $db_user, $db_pw) || db_error(Databaseverbinding niet gemaakt: $DBI::errstr); $sql = select domain from bind_dns_header; $sth = $dbh-prepare($sql)|| error(Kan het statement niet voorbereiden: $dbh-errstr); $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$domain); while ($sth-fetch()) { # line 61 print $domain with the following recordsbr \n; $sql2 = select dnsrecord_id from bind_dns_item where domain = '$domain'; $sth = $dbh-prepare($sql2)|| error(Kan het statement niet voorbereiden: $dbh-errstr); $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$dnsrecord_id); while ($sth-fetch()) { print Record: $dnsrecord_id \n; } } $sth-finish(); Regards, Almar - Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail [EMAIL PROTECTED] To unsubscribe, e-mail [EMAIL PROTECTED] Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php
Query problem in Perl
Hello, I was trying to create a simple perl program, where my domains where listed followed by there DNS records. But It loops once, and then ends with error DBD::mysql::st fetch failed: fetch() without execute() at test.cgi line 61. I thougt this was the easyest way to do so. But no.. Does anyone have any experience with these kind of sub-statements? $dbh = DBI-connect(DBI:mysql:database=$db_database;host=$db_host, $db_user, $db_pw) || db_error(Databaseverbinding niet gemaakt: $DBI::errstr); $sql = select domain from bind_dns_header; $sth = $dbh-prepare($sql)|| error(Kan het statement niet voorbereiden: $dbh-errstr); $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$domain); while ($sth-fetch()) { # line 61 print $domain with the following recordsbr \n; $sql2 = select dnsrecord_id from bind_dns_item where domain = '$domain'; $sth = $dbh-prepare($sql2)|| error(Kan het statement niet voorbereiden: $dbh-errstr); $sth-execute || error(Fout bij het communiceren met de database: $DBI::errstr); $sth-bind_columns(\$dnsrecord_id); while ($sth-fetch()) { print Record: $dnsrecord_id \n; } } $sth-finish(); Regards, Almar - Before posting, please check: http://www.mysql.com/manual.php (the manual) http://lists.mysql.com/ (the list archive) To request this thread, e-mail [EMAIL PROTECTED] To unsubscribe, e-mail [EMAIL PROTECTED] Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php