文字

maxdb_stmt_bind_param

maxdb_stmt::bind_param

(PECL maxdb >= 1.0)

maxdb_stmt_bind_param -- maxdb_stmt::bind_paramBinds variables to a prepared statement as parameters

说明

过程化风格

bool maxdb_stmt_bind_param ( resource $stmt , string $types , mixed &$var1 [, mixed &$... ] )

面向对象风格

bool maxdb_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] )

过程化风格 (extended syntax):

bool maxdb_stmt_bind_param ( resource $stmt , string $types , array &$var )

面向对象风格 (extended syntax):

bool maxdb_stmt::bind_param ( string $types , array &$var )

maxdb_stmt_bind_param() is used to bind variables for the parameter markers in the SQL statement that was passed to maxdb_prepare() . The string types contains one or more characters which specify the types for the corresponding bind variables.

The extended syntax of maxdb_stmt_bind_param() allows to give the parameters as an array instead of a variable list of PHP variables to the function. If the array variable has not been used before calling maxdb_stmt_bind_param() , it has to be initialized as an emtpy array. See the examples how to use maxdb_stmt_bind_param() with extended syntax.

Variables for SELECT INTO SQL statements can also be bound using maxdb_stmt_bind_param() . Parameters for database procedures can be bound using maxdb_stmt_bind_param() . See the examples how to use maxdb_stmt_bind_param() in this cases.

If a variable bound as INTO variable to an SQL statement was used before, the content of this variable is overwritten by the data of the SELECT INTO statement. A reference to this variable will be invalid after a call to maxdb_stmt_bind_param() .

For INOUT parameters of database procedures the content of the bound INOUT variable is overwritten by the output value of the database procedure. A reference to this variable will be invalid after a call to maxdb_stmt_bind_param() .

Type specification chars
Character Description
i corresponding variable has type integer
d corresponding variable has type double
s corresponding variable has type string
b corresponding variable is a blob and will be sent in packages

返回值

成功时返回 TRUE , 或者在失败时返回 FALSE

范例

Example #1 面向对象风格

<?php
$maxdb 
= new  maxdb ( 'localhost' 'MONA' 'RED' 'DEMODB' );


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

$maxdb -> query  ( "CREATE TABLE temp.mycity LIKE hotel.city" );
$maxdb -> query  ( "INSERT INTO temp.mycity SELECT * FROM hotel.city" );

$stmt  $maxdb -> prepare ( "INSERT INTO temp.mycity VALUES (?, ?, ?)" );
$stmt -> bind_param ( 'sss' $zip $name $state );

$zip  '11111' ;
$name  'Georgetown' ;
$state  'NY' ;


$stmt -> execute ();

printf ( "%d Row inserted.\n" $stmt -> affected_rows );


$stmt -> close ();


$maxdb -> query ( "DELETE FROM temp.mycity WHERE name='Georgetown'" );
printf ( "%d Row deleted.\n" $maxdb -> affected_rows );


$maxdb -> close ();
?>

Example #2 过程化风格

<?php
$link 
maxdb_connect ( "localhost" "MONA" "RED" "DEMODB" );


if (! $link ) {
   
printf ( "Connect failed: %s\n" maxdb_connect_error ());
   exit();
}

maxdb_query  ( $link "CREATE TABLE temp.mycity LIKE hotel.city" );
maxdb_query  ( $link "INSERT INTO temp.mycity SELECT * FROM hotel.city" );

$stmt  maxdb_prepare ( $link "INSERT INTO temp.mycity VALUES (?, ?, ?)" );
maxdb_stmt_bind_param ( $stmt 'sss' $zip $name $state );

$zip  '11111' ;
$name  'Georgetown' ;
$state  'NY' ;


maxdb_stmt_execute ( $stmt );

printf ( "%d Row inserted.\n" maxdb_stmt_affected_rows ( $stmt ));


maxdb_stmt_close ( $stmt );


maxdb_query ( $link "DELETE FROM temp.mycity WHERE name='Georgetown'" );
printf ( "%d Row deleted.\n" maxdb_affected_rows ( $link ));


maxdb_close ( $link );
?>

以上例程的输出类似于:

1 Row inserted.
1 Row deleted.

Example #3 过程化风格 (SELECT INTO)

<?php
$link 
maxdb_connect ( "localhost" "MONA" "RED" "DEMODB" );


if (! $link ) {
   
printf ( "Connect failed: %s\n" maxdb_connect_error ());
   exit();
}


$stmt  maxdb_prepare  ( $link "SELECT price INTO ? FROM hotel.room where hno = ? and type = ?" );
if (!
$stmt ) {
  
printf  ( "Prepare failed: %s\n" maxdb_error ( $link ));
}

$hno  "50" ;
$rtype  "suite" ;

maxdb_stmt_bind_param ( $stmt 'dss' $price $hno $rtype );
maxdb_stmt_execute ( $stmt );

printf  ( "%f\n" $price );

maxdb_stmt_close  ( $stmt );
?>

以上例程的输出类似于:

21.600000

Example #4 过程化风格 (DB procedure)

<?php
$link 
maxdb_connect ( "localhost" "MONA" "RED" "DEMODB" );


if (! $link ) {
   
printf ( "Connect failed: %s\n" maxdb_connect_error ());
   exit();
}

maxdb_report  ( MAXDB_REPORT_OFF );
maxdb_query ( $link , "DROP DBPROC test_proc" );
maxdb_report  ( MAXDB_REPORT_ERROR );

$query  "create dbproc test_proc (INOUT e_text char(72)) AS select * from SYSDBA.DUAL; fetch into :e_text;" ;

maxdb_query ( $link $query );


$stmt  maxdb_prepare  ( $link "CALL test_proc (?)" );
if (!
$stmt ) {
  
printf  ( "Prepare failed: %s\n" maxdb_error ( $link ));
}

maxdb_stmt_bind_param ( $stmt 's' $result );
maxdb_stmt_execute ( $stmt );

printf  ( "%s\n" $result );

maxdb_stmt_close  ( $stmt );
?>

以上例程的输出类似于:

a

Example #5 面向对象风格 (extended syntax)

<?php
$maxdb 
= new  maxdb ( 'localhost' 'MONA' 'RED' 'DEMODB' );


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

$maxdb -> query  ( "CREATE TABLE temp.mycity LIKE hotel.city" );
$maxdb -> query  ( "INSERT INTO temp.mycity SELECT * FROM hotel.city" );

$stmt  $maxdb -> prepare ( "INSERT INTO temp.mycity VALUES (?, ?, ?)" );

$arr  = array();

$stmt -> bind_param ( 'iss' $arr );

$arr [ 0 ] =  11111 ;
$arr [ 1 ] =  'Georgetown' ;
$arr [ 2 ] =  'NY' ;


$stmt -> execute ();

printf ( "%d Row inserted.\n" maxdb_stmt_affected_rows ( $stmt ));

$arr [ 0 ] =  22222 ;
$arr [ 1 ] =  'New Orleans' ;
$arr [ 2 ] =  'LA' ;


$stmt -> execute ();

printf ( "%d Row inserted.\n" $stmt -> affected_rows );


$stmt -> close ();

$result  $maxdb -> query ( "SELECT * from temp.mycity WHERE zip = '11111' OR zip = '22222'" );
if (
$result ) {
  while (
$row  $result -> fetch_row ()) {
    
printf  ( "%s %s %s\n" $row [ 0 ],  $row [ 1 ],  $row [ 2 ]);
  }
}


$maxdb -> query ( "DELETE FROM temp.mycity WHERE name='Georgetown'" );
$maxdb -> query ( "DELETE FROM temp.mycity WHERE name='New Orleans'" );
printf ( "%d Rows deleted.\n" $maxdb -> affected_rows );


$maxdb -> close ();
?>

以上例程的输出类似于:

1 Row inserted.
1 Row inserted.
11111 Georgetown NY
22222 New Orleans LA
2 Rows deleted.

参见

  • maxdb_stmt_bind_result() - Binds variables to a prepared statement for result storage
  • maxdb_stmt_execute() - Executes a prepared Query
  • maxdb_stmt_fetch() - Fetch results from a prepared statement into the bound variables
  • maxdb_prepare() - Prepare an SQL statement for execution
  • maxdb_stmt_send_long_data() - Send data in blocks
  • maxdb_stmt_errno() - Returns the error code for the most recent statement call
  • maxdb_stmt_error() - Returns a string description for last statement error
上一篇: 下一篇: