[ic] sql insert/update with interchange?

Kevin Walsh kevin at cursor.biz
Sat May 28 11:26:04 EDT 2005


T. Stoffels [tstoffels at gmail.com] wrote:
>
> I noticed it's possible to write to my database from within an
> interchange page (to save values passed by a form for example) by
> 'abusing' the query tag:
>
> [query sql=|insert into mytable (myvalue) values(13) | ]  [/query]
> 
> It works, no doubt about that, but I can't imagine it was intended to
> be that way.
>
It is intended to work that way, yes.  The [query] tag can handle any
SQL query allowed by your database userid - including SELECT, UPDATE,
DELETE etc.  It is not an abuse of the [query] tag to use SQL. :-)

>
> The query.../query tag seems to return '1' btw, (which appears as
> output on my page)
>
That's fine as well.  You can use the result code, or just capture
it in a scratch variable: [tmp foo] ... [/tmp].

> 
> So, is there some special interchange tag for writing to a database?
>
[data] is one such tag.

>
> Or maybe interchange provides a ready-to-use DBI-handle which can be
> accessed from within a [perl]...[/perl ] statement?
> 
Try something like the following:

    [perl tables="sometable"]
        my $tablename = 'sometable';
        my $db = $Db{$tablename} or die "Bad table: $tablename";

        my $query = qq{
            INSERT
            INTO    $tablename (fname, lname)
            VALUES  ('Kevin', 'Walsh')
        };
        $db->query($query) or die "Can't INSERT into $tablename";
        undef;
    [/perl]

If that's all you wanted to do then you might as well just use the
[query] tag.  If you have other processing in mind then the above
[perl] snippet might come in handy.

-- 
   _/   _/  _/_/_/_/  _/    _/  _/_/_/  _/    _/
  _/_/_/   _/_/      _/    _/    _/    _/_/  _/   K e v i n   W a l s h
 _/ _/    _/          _/ _/     _/    _/  _/_/    kevin at cursor.biz
_/   _/  _/_/_/_/      _/    _/_/_/  _/    _/



More information about the interchange-users mailing list