Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
PerlMonks  

Re^4: Inserting, update and deleteting a database under conditions

by Nik
on Jan 14, 2008 at 20:43 UTC ( #662373=note: print w/ replies, xml ) Need Help??


in reply to Re^3: Inserting, update and deleteting a database under conditions
in thread Inserting, update and deleteting a database under conditions

Okey here is the code for the 1st of 3 parts of my question thati wrote:

my @files = glob "$ENV{'DOCUMENT_ROOT'}/data/text/*.txt"; my @filenames = map {/([^\/]+)\.txt$/} @files; my @dbfiles = $db->do( 'SELECT title, body FROM articles' ); my $replace = $db->prepare( 'INSERT INTO article (title, body) VALUES +(?, ?)' ); foreach $filename (@filenames) { #Check every filename(item in @menu_files) as well as its content t +o see if is already inserted in table articles under columns title an +d body #============ INSERT NEW FILENAMES & CONTENTS INTO DATABASE IF ANY +============= #If filename and content dont already exist in the db then do inser +t them unless( grep /^\Q$filename\E$/, @dbfiles ) { open FILE, "<$filename" or die $!; @data = <FILE>; close FILE; unless( grep /^\Q$data\E$/, @dbfiles ) { $db->do('INSERT INTO articles (title, body) VALUES (?, ?)', u +ndef, $filename, $data) } } }
I know i have syntax errors and the array @dbfiles it snot filled correctly but at least i tried.

What i try to do each open each filename and check to see if there is an already column name in the db for that filename, if it is iam also checking for the filenames content to see if it matched the 'body' column of the db

Here is the definition of mysql table articles which is supposes to hold the filenames and their contents.

$db->do( 'CREATE TABLE articles (id tinyint auto_increment primary k +ey, title varchar(100), body text)' );
I believe the logical of the code its correct its the syntax part iam having trouble with.


Comment on Re^4: Inserting, update and deleteting a database under conditions
Select or Download Code
Re^5: Inserting, update and deleteting a database under conditions
by apl (Monsignor) on Jan 14, 2008 at 21:32 UTC
    With use strict; you get the following errors:

    Global symbol "$db" requires explicit package name at /apps/otctest/bi +n/report/xx.perl line 8. Global symbol "$filename" requires explicit package name at /apps/otct +est/bin/report/xx.perl line 11. Global symbol "@data" requires explicit package name at /apps/otctest/ +bin/report/xx.perl line 21. Variable "$data" is not imported at /apps/otctest/bin/report/xx.perl l +ine 24. Global symbol "$data" requires explicit package name at /apps/otctest/ +bin/report/xx.perl line 24. Variable "$data" is not imported at /apps/otctest/bin/report/xx.perl l +ine 26. Global symbol "$data" requires explicit package name at /apps/otctest/ +bin/report/xx.perl line 26.
    The simple fix is

    foreach my $filename (@filenames) {

    I'm not trying to be snarky; what do you think $db and @data are? (The errors are telling you to define them.) Once you do, revised: you're going to start getting errors due to the underlying logical problems in your code.
      Well i frgoto 'my'. Except that when iam trying to print @dbfiles it display to me the numder 28, so i guess my statement concernign @dbfiles is also wrong. I was trying to get the data from columns title and body.

      how can i write that properly and what logical error do you see?

        How does $db get initialized? When you do the INSERT, what values should be in place of the question marks you specified?

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://662373]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others examining the Monastery: (9)
As of 2014-09-02 17:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My favorite cookbook is:










    Results (25 votes), past polls