Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[PHP] Looking for some assistance / guidance --

2 views
Skip to first unread message

Jeff Silberberg

unread,
Jul 28, 2014, 8:45:06 PM7/28/14
to
Good evening --

I have a Wordpress / HTML form that includes <select size="5" multiple name=Keys[]"....>

The form calls a PHP CGI program and if I set it to phpinfo()  I see that the array Keys is in the post data.  An I can do a $selectedKeys = $_POST('Keys')  and walk through and echo out the array elements without a problem. 

My issues start when I attempt to pass the array of Keys to my PostgreSql function with a parameter list of (web_Keys_ integer[], web_text_ text, web_user_ text) ................

in my php I do a pg_connect, and then prepare a number of statements all of which work but the last one. 

    it is $return_cde = pg_prepare($conn, "SendKeys", 'select web.sendKeys$1, $2, $3)');. 

   and I try to execute this with

      $userKey=$_POST['Keys'];
      $userText=$_POST['msgText'] . " / " . $current_user->display_name;

      $return = pg_execute($conn, "SendKeys", array($userKey, $userText, $current_user->display_name));

      Which returns and error --

function.pg-execute]: Query failed: ERROR: array value must start with "{" or dimension information in /home/xxxxxxx/public_html/enterkey/cgi-bin/xxxxxxcgi.php on line 90


      echo "User Keys " . gettype($userKey)."<br>\n";   confirms this is a Array ..    An I have tried casting  $1::int[]  in the prepare with no luck..

      I find a lot of hits on Google searches but no solutions..

      Hoping someone here can assist me with this issue..

=============


Matthias Ritzkowski

unread,
Jul 28, 2014, 9:03:47 PM7/28/14
to
Is the array maybe zero-based?

Did you try 'select web.sendKeys$0, $1, $2, $3' ....

Regards
Matthias

Jeff Silberberg

unread,
Jul 28, 2014, 9:26:28 PM7/28/14
to
Nope ---

    http://php.net/manual/en/function.pg-prepare.

    If any parameters are used, they are referred to in the query as $1, $2, etc.

Michael Wallner

unread,
Jul 29, 2014, 5:02:33 AM7/29/14
to
On 29/07/14 02:45, Jeff Silberberg wrote:

> echo "User Keys " . gettype($userKey)."<br>\n"; confirms this is
> a Array .. An I have tried casting $1::int[] in the prepare with no
> luck..
>

You have to format it as postgresql array string, so that it can be
parsed as array by the server, e.g: '{1,2,3}'::int[]

So, assuming they keys are integers:
$userKey = "{".implode(",",array_map("intval", $userKey))."}::int[]";

--
Regards,
Mike


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

Jeff Silberberg

unread,
Jul 29, 2014, 9:09:23 AM7/29/14
to
Michael,

    About three am I woke up with this same basic thought in my head.. 

    Will try it latter this morning, but I suspect this is the correct answer.

    Thank you !
0 new messages