Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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.

share|improve this question
 
Can you post the snippet of code which includes your SQL and the php call to execute that SQL? –  Peter Howe Sep 30 '09 at 20:33
 
(It sounds like you've got unmatched quote marks) –  Peter Howe Sep 30 '09 at 20:33
 
<?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. –  russell Sep 30 '09 at 20:39
 
Sorry, thats all a bit cramped. –  russell Sep 30 '09 at 20:39
 
You should not post your code in the comments - edit your question and use the code formatting option there (indent by four spaces or highlight the code and press the '101010' button). –  Henrik Opel Sep 30 '09 at 20:59
add comment

1 Answer

up vote 0 down vote accepted

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 ());
}
share|improve this answer
 
<!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 Sep 30 '09 at 20:45
 
this is the first form that asks me what invoice number i am wanting to pay –  russell Sep 30 '09 at 20:46
 
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('update workorders (paid, ident) values (?,?)',$arr); if (!$ok) { die("Invoice not posted. " . pg_last_error ()); } –  russell Oct 1 '09 at 5:54
 
this gives me and error of: ERROR: syntax error at or near "(" LINE 1: update workorders (paid, ident) values ( $1, $2) ^ –  russell Oct 1 '09 at 5:55
 
UPDATE and INSERT statements do not look anything alike. Reading a basic course on SQL will be much helpful in your case. Start here - postgresql.org/docs/current/static/sql.html and also here - postgresql.org/docs/current/static/dml.html, for you specific "problem". –  Milen A. Radev Oct 1 '09 at 9:48
show 1 more comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.