Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things

Re: Perl -connecting to DB taking query input from user

by graff (Chancellor)
on Mar 06, 2013 at 02:22 UTC ( #1021931=note: print w/replies, xml ) Need Help??

in reply to Perl -connecting to DB taking query input from user

If you really want to prompt for input from the user after the program starts, then the advice in the first reply will take care of the immediate problem. But I would recommend using a command-line argument, which your script sees as $ARGV[0] (you run your script via a command-line shell, don't you?)

Apart from that, you'll be better off using a placeholder in the sql query string, and passing the value to search for as a parameter when you execute the query:

#!/usr/bin/perl use strict; # don't comment this out, and don't capitalize it. use DBI; my $Strain; if ( @ARGV ) { $Strain = shift; # get your target string from the command line } else { print "Please Enter the Strain Name: "; $Strain = <>; chomp $Strain; } $dbh = DBI->connect('dbi:mysql:sampledb','root','******') or die "Connection Error: $DBI::errstr\n"; $sql = <<EOS; # let's make it easier to read while we're at it SELECT feature.fastaId, feature.contigId, feature.orfId, strain.strainName, sequence.ntseq, sequence.aaseq from feature left join strain on left join sequence on where strainName = ? EOS $sth = $dbh->prepare($sql); $sth->execute( $Strain ) or die "SQL Error: $DBI::errstr\n"; while (@row = $sth->fetchrow_array) { print "@row\n"; }

Replies are listed 'Best First'.
Re^2: Perl -connecting to DB taking query input from user
by MVRS (Acolyte) on Mar 06, 2013 at 02:47 UTC

    thank you graff its working fine

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1021931]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (10)
As of 2017-01-24 13:10 GMT
Find Nodes?
    Voting Booth?
    Do you watch meteor showers?

    Results (204 votes). Check out past polls.