in reply to Looping an SQL query
and use placeholders in your sql. Put a ? in your sql where you would liek to put a value, then when you call execute pass the values.use strict; use warnings;
#!/usr/bin/perl # This script reads a file and creates 2 variables with it by using a +hash. # the data is in 2 columns. Column1=msisdn Column2=DeletionDate # This script may be helpful if expanded to a loop and db query for fi +guring # last possible active date. # # Sample of the file read by script # 19992507638 deletions.20060723 # 19993017551 deletions.20060723 use strict; use warnings; use DBI; my $database = "chai"; my $hostname = "localhost"; my $port = "3306"; my $username = "bonezer"; my $password = 'monezer'; my $dsn = "DBI:mysql:database=$database;host=$hostname;port=$port"; my $dbh = DBI->connect($dsn, $username, $password) or die("Could not c +onnect!"); my $sql = "select to_days(substring( ?,11)) - to_days(lastactive) fro +m user where number = ? into OUTFILE '/tmp/sp'"; my $sth = $dbh->prepare($sql); open(DATA, "/tmp/SEOUL_NUMBERS") or die "Failed to open /tmp/SEUL_NUMB +ERS file: $!"; my %hash; while( <DATA> ) { @elements = split / /, $_; $hash{ $elements[0] } = $elements[1]; $hash{ $elements[1] } = $elements[1]; $sth->execute($elements[1], "$elements[0]\n"); } $dbh->disconnect;
It's untested, but hopefully you can see the use of strict, warnings, and placeholders as well as prepared SQL statements. Cheers!
|
|---|