tags:

views:

230

answers:

1

I am a complete novice at php and postgres. I have been searching all over the net for an answer but no joy! I have a postgres table called workorders. It has a primary key (ident). I am trying to up date it using a php script/program. Basically the ident is the workorder number. I have written a php script where i type in the workorder number, post it to another php file, which connects to the database, finds the ident that matches and updates it by adding 'paid' to a column called paid. I have made it work using INSERT into, but it will not allow duplicate keys so that is why i am trying to use update. When I do, it says "unexpected T_CONSTANT_ENCAPSED_STRING"

Help would be greatly appreciated.

<?php
include('adodb5/adodb.inc.php');

$DB = &ADONewConnection('postgres');
$DB->PConnect('host=localhost port=5432 dbname=test user=postgres password=secret');

if (!$DB) {
  die("Error in connection: " . pg_last_error());
}

$arr = array( array('paid',$_POST['$invoice']), );
$ok = $DB->Execute('insert into workorders (paid, ident) values (?,?)',$arr);

if (!$ok) {
  die("Invoice not posted. " . pg_last_error ());
}

?>

If I use this I can insert into my database. If I replace INSERT into with UPDATE or pg_update I get errors.

A: 

Have now seen your code, which looks fine.

T_CONSTANT_ENCAPSED_STRING is often the result of not escaping quotation marks when used in strings. But I am not seeing that here. Can you post the example that does not work?

include('adodb5/adodb.inc.php');

$DB = &ADONewConnection('postgres');
$DB->PConnect('host=localhost port=5432 dbname=test user=postgres password=secret');
if (!$DB) {
    die("Error in connection: " . pg_last_error());
}

$arr = array( array('paid',$_POST['$invoice']), );
$ok = $DB->Execute('insert into workorders (paid, ident) values (?,?)',$arr);
if (!$ok) {
    die("Invoice not posted. " . pg_last_error ());
}
Peter Howe
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html> <head></head> <body> <form action="test.php" method="post"> Enter invoice number to pay:<input type='text' name="$invoice" value=> <p> <p> <input type="submit" name="submit" value="Post Invoice"> </form> </body> </html>
russell
this is the first form that asks me what invoice number i am wanting to pay
russell
include('adodb5/adodb.inc.php');$DB = $DB->PConnect('host=localhost port=5432 dbname=test user=postgres password=secret');if (!$DB) { die("Error in connection: " . pg_last_error());}$arr = array( array('paid',$_POST['$invoice']), );$ok = $DB->Execute('update workorders (paid, ident) values (?,?)',$arr);if (!$ok) { die("Invoice not posted. " . pg_last_error ());}
russell
this gives me and error of:ERROR: syntax error at or near "(" LINE 1: update workorders (paid, ident) values ( $1, $2) ^
russell
UPDATE and INSERT statements do not look anything alike. Reading a basic course on SQL will be much helpful in your case. Start here - http://www.postgresql.org/docs/current/static/sql.html and also here - http://www.postgresql.org/docs/current/static/dml.html, for you specific "problem".
Milen A. Radev
Thank you Milen. That is what I was trying to find on the net but I could not find anything to point me in the right direction. Thanks for the links.
russell