Re: Prepared Statements - Search

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Does the list of the SELECT fields not have to match the variables you are
binding? E.g. if you do not include MedRec in your SELECT then you have no
MedRec data to bind from your $sql11 variable to the $MedRec varable and
then nothing to print there... or what? Am I just fabulating? :).

Cheers,

Fjalar

On Friday, September 14, 2012, Ethan Rosenberg, PhD
wrote:

Dear List -
>
> Here is another problem I am having with prepared statements.  The last
> one was  INSERT, this one is SELECT.
>
> Here is the database:
>
> mysql> describe Intake3;
> +--------+-------------+------**+-----+---------+-------+
> | Field  | Type        | Null | Key | Default | Extra |
> +--------+-------------+------**+-----+---------+-------+
> | Site   | varchar(6)  | NO   | PRI |         |       |
> | MedRec | int(6)      | NO   | PRI | NULL    |       |
> | Fname  | varchar(15) | YES  |     | NULL    |       |
> | Lname  | varchar(30) | YES  |     | NULL    |       |
> | Phone  | varchar(30) | YES  |     | NULL    |       |
> | Height | int(4)      | YES  |     | NULL    |       |
> | Sex    | char(7)     | YES  |     | NULL    |       |
> | Hx     | text        | YES  |     | NULL    |       |
> | Bday   | date        | YES  |     | NULL    |       |
> | Age    | int(3)      | YES  |     | NULL    |       |
> +--------+-------------+------**+-----+---------+-------+
> 10 rows in set (0.00 sec)
>
> Here is my code:
>
> // Prepare statement
>     $stmt = mysqli_stmt_init($cxn);
>     $sql11 = "SELECT  'Fname', 'Lname', 'Phone', Height, Hx, Bday, Age
> FROM Intake3 where 1 and (MedRec = ?) and (Site = ?) and (Sex = ?)";
> // Allocates and initializes a statement object suitable for
> mysqli_stmt_prepare().
> // Prepare statement, bind result variables, execute and place results
> into bound result variables
>    mysqli_stmt_prepare($stmt, $sql11);
>    mysqli_stmt_execute($stmt);
>    mysqli_stmt_bind_result($stmt, $Site, $MedRec, $Fname, $Lname, $Phone,
> $Height, $Sex, $Hx, $Bday, $Age); //The error is in this statement.
>     while (mysqli_stmt_fetch($stmt)) {
>         printf("%s %s %s %s %s %s %s %s %s %s \n", $Site, $MedRec, $Fname,
> $Lname, $Phone, $Height, $Sex, $Hx, $Bday, $Age);
>     }
>
> I get no output from the printf statement.
>
> I receive the following error:
>
> Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match
> number of fields in prepared statement.
>
> The query, with the values inserted, works on the command line
>
> Help and advice, please.
>
> Ethan
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php



On Friday, September 14, 2012, Ethan Rosenberg, PhD wrote:

> Dear List -
>
> Here is another problem I am having with prepared statements.  The last
> one was  INSERT, this one is SELECT.
>
> Here is the database:
>
> mysql> describe Intake3;
> +--------+-------------+------**+-----+---------+-------+
> | Field  | Type        | Null | Key | Default | Extra |
> +--------+-------------+------**+-----+---------+-------+
> | Site   | varchar(6)  | NO   | PRI |         |       |
> | MedRec | int(6)      | NO   | PRI | NULL    |       |
> | Fname  | varchar(15) | YES  |     | NULL    |       |
> | Lname  | varchar(30) | YES  |     | NULL    |       |
> | Phone  | varchar(30) | YES  |     | NULL    |       |
> | Height | int(4)      | YES  |     | NULL    |       |
> | Sex    | char(7)     | YES  |     | NULL    |       |
> | Hx     | text        | YES  |     | NULL    |       |
> | Bday   | date        | YES  |     | NULL    |       |
> | Age    | int(3)      | YES  |     | NULL    |       |
> +--------+-------------+------**+-----+---------+-------+
> 10 rows in set (0.00 sec)
>
> Here is my code:
>
> // Prepare statement
>     $stmt = mysqli_stmt_init($cxn);
>     $sql11 = "SELECT  'Fname', 'Lname', 'Phone', Height, Hx, Bday, Age
> FROM Intake3 where 1 and (MedRec = ?) and (Site = ?) and (Sex = ?)";
> // Allocates and initializes a statement object suitable for
> mysqli_stmt_prepare().
> // Prepare statement, bind result variables, execute and place results
> into bound result variables
>    mysqli_stmt_prepare($stmt, $sql11);
>    mysqli_stmt_execute($stmt);
>    mysqli_stmt_bind_result($stmt, $Site, $MedRec, $Fname, $Lname, $Phone,
> $Height, $Sex, $Hx, $Bday, $Age); //The error is in this statement.
>     while (mysqli_stmt_fetch($stmt)) {
>         printf("%s %s %s %s %s %s %s %s %s %s \n", $Site, $MedRec, $Fname,
> $Lname, $Phone, $Height, $Sex, $Hx, $Bday, $Age);
>     }
>
> I get no output from the printf statement.
>
> I receive the following error:
>
> Warning: mysqli_stmt_bind_result(): Number of bind variables doesn't match
> number of fields in prepared statement.
>
> The query, with the values inserted, works on the command line
>
> Help and advice, please.
>
> Ethan
>
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

[Index of Archives]     [PHP Home]     [PHP Users]     [Postgresql Discussion]     [Kernel Newbies]     [Postgresql]     [Yosemite News]

  Powered by Linux