views:

26

answers:

2

Hi all,

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query('PREPARE mid FROM "SELECT name FROM test_user WHERE id = ?"');
// working code start
//$res = $mysqli->query('PREPARE mid FROM "SELECT name FROM test_user"  ');
//$res = $mysqli->query( 'EXECUTE mid;') or die(mysqli_error($mysqli));
// working code end..
$res = $mysqli->query( 'EXECUTE mid 1;') or die(mysqli_error($mysqli));

while($resu = $res->fetch_object()) {
    echo '<br>' .$resu->name;
}

Error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 1

my php version is PHP Version 5.3.0 and mysql

mysqlnd 5.0.5-dev - 081106 - $Revision: 1.3.2.27 $ 

I got the correct result with out using the where clause

+2  A: 

Use the prepare function for a SELECT query:

http://php.net/manual/en/mysqli.prepare.php

/* create a prepared statement */
if ($stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?")) {

    /* bind parameters for markers */
    $stmt->bind_param("s", $city);

    /* execute query */
    $stmt->execute();

    /* bind result variables */
    $stmt->bind_result($district);

    /* fetch value */
    $stmt->fetch();

    /* close statement */
    $stmt->close();
}
Alec
how can i call this multiple times,?
The idea here is that you prepare the query, bind values, execute the prepared query, bind other values, execute the prepared query again with those new values, etc. So simply call the `execute()` again. More info: http://www.php.net/manual/en/mysqli-stmt.execute.php
Alec
A: 

http://dev.mysql.com/doc/refman/5.1/en/execute.html

You need to have a using clause in the EXECUTE statement. So you could do something like:

$mysqli = new mysqli("localhost", "root", "", "test");
$mysqli->query('PREPARE mid FROM "SELECT name FROM test_user WHERE id = ?"');
$mysqli->query('SET @var1 = 1;');
$res = $mysqli->query( 'EXECUTE mid USING @var1;') or die(mysqli_error($mysqli));
ircmaxell