http://www.perlmonks.org?node_id=1008249


in reply to DBI Substring index query and passing value

And what does your query produce when run straight against the database with an SQL command prompt?

How many records are there in the database that begin with '$name'? Does fetchrow_array return false? (If so, your resultset is zero rows.)

Also, I'm quite confused by the query. Do you have fields that are named $$$? (Double quotes are meant to quote table and field names in the SQL dialects I'm familiar with.)

Perhaps you mean:

my $sql = sprintf("... where CustomField = ? and Name like %s", $dbh-> +quote($name . '%')); $agent1 = $dbh->prepare($sql) || die $DBI::errstr; $Agent1->execute(291) || die $DBI::errstr ; ( $phone_no,$mail )= $Agent1->fetchrow_array or die "no results :(";

May I recommend you put RaiseError into your connection string? Less explicit dying.

Replies are listed 'Best First'.
Re^2: DBI Substring index query and passing value
by SriniK (Beadle) on Dec 11, 2012 at 10:41 UTC
    Hi,
    Thanks for your replay.

    $name will be like "Christin". the Direct result in sql will be
    phone_no Mail_ID +00 00 0000 0000 ********.*****@******.com
    In that query the actual result will be +00 00 0000 0000$$********.*****@******.com$$$******, in that im splitting the required phone no and mail id using sub string in sql

    hope you understand.
    The result is there in SQL. But while running in perl it not showing result must be some special charcter issue.
    I tried various methods but not able to get the answer. As of now i have changed the query and splitting done in script.
    Thanks
    Srinivasan

      $name will be like "Christin".

      Well, currently, $name is $name; single quotes don't interpolate. Do check how I modified your query code. (Also worth looking is 7548)