Prepared Statements - Select

"Ethan Rosenberg, PhD" <[email protected]>
Newsgroups gmane.comp.php.database
Organization Hygeia Biomedical Research, Inc.
Message-ID <[email protected]>
Dear List -

Thanks to all for your responses.

Here is another one ....

I wish to accomplish the following

mysqli_stmt_bind_param($stmt, 'sis', $_POST['Site'], $_POST['MedRec'], 
$_POST['Sex']);

This statemnt was hand coded.  I wish to be able to generalize it.

Therefore -

         $sql11 = "SELECT Site, MedRec, Fname, Lname, Phone, Height, 
Sex, Hx, Bday, Age FROM Intake3 where  1 ";

         $allowed_fields = array
             (  'Site' =>$_POST['Site'], 'MedRec' => $_POST['MedRec'], 
'Fname' => $_POST['Fname'], 'Lname' => $_POST['Lname'] ,
              'Phone' => $_POST['Phone'] ,  'Height' => 
$_POST['Height'],  'Sex' => $_POST['Sex'],  'Hx' => $_POST['Hx'],
              'Bday' => $_POST['Bday'], 'Age' => $_POST['Age']  );

     $z0    ='$_POST';
     $z0 .="['Site']";

     $z1    ='$_POST';
     $z1 .="['MedRec']";

     $z2    ='$_POST';
     $z2 .="['Fname']";
         .
         .
         .

     $indeces = array(
         "0" => array
         (
         'tpe'=> 's',
         "val" => $z0
         ),
         "1" => array
         (
         "tpe" => "i",
         "val"=> $z1
         ),
         .

         .

     $binder = array(); //array to hold variables
     $typer = array(); //array to hold variable type
     $position = -1;
     foreach ( $allowed_fields as $key => $val )
     {
         $position = $position + 1;

         if  ($val != '')
         {
             array_push($binder, $indeces[$position]['val']);
             array_push($binder, ", ");
             array_push($typer, $indeces[$position]['tpe']);
             $sql11 .= " AND ($key  = ?) ";
         }

      }
     array_pop($binder);

The above generates the following query:

SELECT Site, MedRec, Fname, Lname, Phone, Height, Sex, Hx, Bday, Age FROM Intake3 where  1  AND (Site  = ?)  AND (MedRec  = ?)  AND (Sex  = ?)



   //Construct the strings for the mysqli_stmt_bind_param statement

$typ2 = implode($typer);
$typ3 = "'";
$typ3 .=$typ2;
$typ3 .= "'";

$bind3 = implode($binder);

//This statement works perfectly.  mysqli_stmt_bind_param($stmt, 'sis', 
$_POST['Site'], $_POST['MedRec'], $_POST['Sex']);

//This one fails

     mysqli_stmt_bind_param($stmt, $typ3, $bind3);

With the following error message:

Warning: mysqli_stmt_bind_param(): Number of elements in type definition string doesn't match number of bind variables

	echo "<br />$typ3";'sis'

	echo "<br />  $bind3";  $_POST['Site'], $_POST['MedRec'], $_POST['Sex']



Help and Advice, please

Ethan


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.