PHP
downloads | documentation | faq | getting help | mailing lists | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mysqli_stmt::close> <mysqli_stmt::bind_param
Last updated: Fri, 14 Nov 2008

view this page in

mysqli_stmt::bind_result

mysqli_stmt_bind_result

(PHP 5)

mysqli_stmt::bind_result -- mysqli_stmt_bind_resultPassa variáveis para um preparado comando por resultado armazenado

Descrição

Modo orientado a objeto (método):

bool mysqli_stmt::bind_result ( mixed &$var1 [, mixed &$... ] )

Modo procedural:

bool mysqli_stmt_bind_result ( mysqli_stmt $stmt , mixed &$var1 [, mixed &$... ] )

Passa colunas em um conjunto de resultados para variáveis.

Quando mysqli_stmt_fetch() é chamada para obter dados, o MySQL client/server protocol coloca a informação das colunas nas especificadas variáveis var1, ... .

Nota: Note que todas as colunas precisam ser determinadas antes de mysqli_stmt_execute() e antes de chamar mysqli_stmt_fetch(). Dependendo do tipo da coluna de determinada variável pode silenciosamente mudar para o tipo do PHP correspondente.
Uma coluna pode ser especificada ou não especificada em dado tempo, até mesmo depois de um conjunto de resultado tem sido parcialmente recebido. A nova passagem pega o efeito da última chamada a mysqli_stmt_fetch().

Parâmetros

stmt

Apenas para estilo de procedimento: Um identificador de statement retornado por mysqli_stmt_init().

var1

A variável a ser determinada.

Valor Retornado

Retorna TRUE em caso de sucesso ou FALSE em falhas.

Exemplos

Exemplo #1 Modo orientado a objeto

<?php
$mysqli 
= new mysqli("localhost""my_user""my_password""world");

if (
mysqli_connect_errno()) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

/* prepare statement */
if ($stmt $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
    
$stmt->execute();

    
/* bind variables to prepared statement */
    
$stmt->bind_result($col1$col2);

    
/* fetch values */
    
while ($stmt->fetch()) {
        
printf("%s %s\n"$col1$col2);
    }

    
/* close statement */
    
$stmt->close();
}
/* close connection */
$mysqli->close();

?>

Exemplo #2 Modo procedural

<?php
$link 
mysqli_connect("localhost""my_user""my_password""world");

/* check connection */
if (!$link) {
    
printf("Connect failed: %s\n"mysqli_connect_error());
    exit();
}

/* prepare statement */
if ($stmt mysqli_prepare($link"SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {
    
mysqli_stmt_execute($stmt);

    
/* bind variables to prepared statement */
    
mysqli_stmt_bind_result($stmt$col1$col2);

    
/* fetch values */
    
while (mysqli_stmt_fetch($stmt)) {
        
printf("%s %s\n"$col1$col2);
    }

    
/* close statement */
    
mysqli_stmt_close($stmt);
}

/* close connection */
mysqli_close($link);
?>

O exemplo acima irá imprimir:

AFG Afghanistan
ALB Albania
DZA Algeria
ASM American Samoa
AND Andorra


add a note add a note User Contributed Notes
mysqli_stmt::bind_result
hamidhossain at gmail dot com
01-Sep-2008 07:07
lot of people don't like how bind_result works with prepared statements! it requires you to pass long list of parameters which will be loaded with column value when the function being called.

To solve this, i used call_user_func_array function and result_metadata functions. which make easy and automatically returns an array of all columns results stored in an array with column names.

please don't forget to change setting variables with your own credentials:

<?php
$host
= 'localhost';
$user = 'root';
$pass = '1234';
$data = 'test';

$mysqli = new mysqli($host, $user, $pass, $data);
/* check connection */
if (mysqli_connect_errno()) {
   
printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if (
$stmt = $mysqli->prepare("SELECT * FROM sample WHERE t2 LIKE ?")) {
   
$tt2 = '%';
   
   
$stmt->bind_param("s", $tt2);
   
$stmt->execute();

   
$meta = $stmt->result_metadata();
    while (
$field = $meta->fetch_field())
    {
       
$params[] = &$row[$field->name];
    }

   
call_user_func_array(array($stmt, 'bind_result'), $params);

    while (
$stmt->fetch()) {
        foreach(
$row as $key => $val)
        {
           
$c[$key] = $val;
        }
       
$result[] = $c;
    }
   
   
$stmt->close();
}
$mysqli->close();
print_r($result);
?>

mysqli_stmt::close> <mysqli_stmt::bind_param
Last updated: Fri, 14 Nov 2008
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites