That would not be true.

You'd receive a message stating that you had one placeholder, but you
were passing 3 arugments, and it script would die on the error.

havoc

ryc wrote:
> 
> I was not aware of placeholders, and the benifits of using them instead of
> using $dbh->quote(). It doesnt make sence that the DBI version of quote isnt
> as thorough as having the code behind placeholding do it. But anyhow, I have
> a few questions as to how this works. Here is an example from the Perl
> DBH::mysql docs:
> 
> my @names = ['Flaherty', 'Jones', 'Smith'];
> my $sth = $dbh->prepare("UPDATE contact
>                          SET phone = '555-1212'
>                          WHERE last_name = ?");
> $sth->execute(@names);
> $sth->finish;
> 
> So most likely this query will return 3 rows, each corresponding to the last
> names contained in the array. Does this mean you can not use more than one
> place holder per query? What if the 'WHERE' statement was "WHERE last_name =
> ? AND first_name = ?". So you do an execute like this:
> $sth->execute(@lnames,@fnames) ... This would not work because as far as the
> execute function is concerned, these two arrays are the same (if you want to
> pass them as seperate arguments you must pass references rather than the
> object itself). Anyhow one how placeholders for multiple variables can be
> used? Thanks.
> 
> ryan
> 
> > r> Seems that you are not taking advantage of Perl. This is what you can
> do:
> >
> > No, he is taking advantage of placeholders. It is much better to use
> > placeholder for value substitution that substitute values directly
> > into query with Perl because there is no need to escape values (do you
> > know that $dbh->quote doesn't quote reliably?) and $sth can be reused
> > for simular queries (which can give perfomance gain on some SQL
> > databases).
> >
> > However usually placeholders can be used only for value
> > substitutuion. 'DESC' cannot be substituted since it is a part of
> > query.
> >
> > r> $parentid = x;
> > r> $orderby = 'DESC';
> > r>    my $sth = $dbh -> prepare (qq{
> > r>          SELECT message.name, contents, user.name, message.id
> > r>          FROM message, user
> > r>          WHERE folder='N' and parentid=$parentid
> > r>          GROUP BY message.id
> > r>          ORDER BY time $orderby
> > r>          }) || die $dbh->errstr;
> >
> > r> You can put any variable inside the string... Note that I changed the
> q{
> > r> ... } to qq{ ... }
> >
> > r> $string = q{ string } is the same as $string = 'string';
> > r> $string = qq{ string } is the same as $string = "string";
> >
> > r> Note that variables inside of strings enclosed by '' will not be
> translated,
> > r> only strings enclosed by "" (or qq{} =) ).
> >
> > --
> >  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> > | Ilya Martynov (http://martynov.org/)
> |
> > | GnuPG 1024D/323BDEE6 D7F7 561E 4C1D 8A15 8E80  E4AE BE1A 53EB 323B DEE6
> |
> > | AGAVA Software Company (http://www.agava.com/)
> |
> >  -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
> >
> > ---------------------------------------------------------------------
> > 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

-- 
*****=======| http://bigpig.org/
*****=======|
*****=======| It's about Freedom!
============|

---------------------------------------------------------------------
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

Reply via email to