Re: error: there is no parameter $1 - Mailing list pgsql-novice

From Kinnard Hockenhull
Subject Re: error: there is no parameter $1
Date
Msg-id CADxWJUpNwEfAd9hxVpaKZkkGmyLicJxJNW5qR4ZRcyJ6h8ie8A@mail.gmail.com
Whole thread Raw
In response to error: there is no parameter $1  (Kinnard Hockenhull <kinnard@bitbox.mx>)
Responses Re: error: there is no parameter $1  (David Johnston <polobo@yahoo.com>)
List pgsql-novice



On Mon, Oct 14, 2013 at 9:47 PM, Kinnard Hockenhull <kinnard@bitbox.mx> wrote:
Broader code sample: 
app.post('/newcause', function (req,res){
  console.log(req.body);
  
  var g;
  
  var r = [];
  
  for (g in req.body)
  {
    r[g]=req.body[g];
    console.log('r[g] is ' + r[g]);
  }
  
  client = pg.connect(connectionString, function(err, client, done){
    if(err) console.log(err);
    client.query('INSERT INTO causes (cause_name, goal, organization, sponsor, submitter) VALUES ($1,$2,$3,$4,$5)', r, function(err){
      console.log('This is r' + r)
      if (err) console.log(err);
    });    
  });
});

Is this a scope issue? I tried passing r into pg.connect, that didn't work.


On Mon, Oct 14, 2013 at 4:51 PM, David Johnston <polobo@yahoo.com> wrote:
Kinnard Hockenhull wrote
> I get "error: there is no parameter $1" when I try to run this code using
> the node-postgres <https://github.com/brianc/node-postgres> client:
>
> client = pg.connect(connectionString, function(err, client, done){
>     if(err) console.log(err);
>     client.query('INSERT INTO causes (cause_name, goal, organization,
> sponsor, submitter) VALUES ($1,$2,$3,$4,$5)', r, function(err){
>

This a node usage issue, not PostgreSQL.  That said you seem to be wanting
to use a prepared statement yet the syntax you show is a direct query.  In a
direct/literal query parameters (whether they be of the "?" or "$#" form)
are not allowed/understood.  Where in the code provided do you even attempt
to assign values to ${1-5}?

You either need to replace "${1-5}" with actual data or figure out how to
execute prepared queries in node.  The later is recommended since it is the
more secure way of doing things.

<goes looking at node-postgres>

Supposedly the "r" variable holds the array of five values you want to map
onto ${1-5}.  You do not show where "r" gets defined so maybe it is
undefined and thus you are not actually mapping values?

David J.



--
View this message in context: http://postgresql.1045698.n5.nabble.com/error-there-is-no-parameter-1-tp5774552p5774559.html
Sent from the PostgreSQL - novice mailing list archive at Nabble.com.


--
Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-novice



--
All the best,
Kinnard Hockenhull
Founder + CEO,

**********************************************************
Electronic Mail is not secure, may not be read every day, and should not be used for urgent or sensitive issues



--
All the best,
Kinnard Hockenhull
Founder + CEO,

**********************************************************
Electronic Mail is not secure, may not be read every day, and should not be used for urgent or sensitive issues

pgsql-novice by date:

Previous
From: Kevin Hunter Kesling
Date:
Subject: Re: how to handle Pagination >
Next
From: David Johnston
Date:
Subject: Re: error: there is no parameter $1