Looking for some assistance / guidance --

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Looking for some assistance / guidance --

Jeff Silberberg
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..

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


Reply | Threaded
Open this post in threaded view
|

Re: Looking for some assistance / guidance --

Matthias Ritzkowski
Is the array maybe zero-based?

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

Regards
Matthias

On 7/28/14, 8:45 PM, Jeff Silberberg wrote:
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..

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



Reply | Threaded
Open this post in threaded view
|

Re: Looking for some assistance / guidance --

Jeff Silberberg
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.



On Mon, Jul 28, 2014 at 9:03 PM, Matthias Ritzkowski <[hidden email]> wrote:
Is the array maybe zero-based?

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

Regards
Matthias


On 7/28/14, 8:45 PM, Jeff Silberberg wrote:
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..

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






Reply | Threaded
Open this post in threaded view
|

Re: Looking for some assistance / guidance --

Michael Wallner
In reply to this post by Jeff Silberberg
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 ([hidden email])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-php
Reply | Threaded
Open this post in threaded view
|

Re: Looking for some assistance / guidance --

Jeff Silberberg
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 !



On Tue, Jul 29, 2014 at 5:02 AM, Michael Wallner <[hidden email]> wrote:
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