ホームページ  >  記事  >  バックエンド開発  >  PHPのbindParamとbindValueの違い

PHPのbindParamとbindValueの違い

藏色散人
藏色散人オリジナル
2019-02-22 10:23:023721ブラウズ

PHPのbindParamとbindValueの違い

PDOStatement ::bindParam() この関数は、パラメータを指定された変数にバインドするために使用される PHP の組み込み関数です。名前。この関数は変数をバインドし、その値を入力として渡し、関連する引数タグがあればその出力値を受け取ります。

構文:

bool PDOStatement::bindParam
( $parameter, $variable, $data_type, $length, $driver_options )

パラメーター: この関数は、上で説明したように、以下に説明するように 5 つのパラメーターを受け入れます:

$パラメーター: 名前のプレースホルダーを使用する Prepare ステートメントのパラメーター識別子です。 。これは、name という形式のパラメータ名です。

$variable: このパラメータは、SQL ステートメントのパラメータにバインドされる変数名を保存するために使用されます。

$data_type: PDO::PARAM_* 定数を使用したパラメーターの明示的なデータ型です。

$length: このパラメータは、データ型の長さを保存するために使用されます。

$driver_options: このパラメータは、実行する必要がある操作を保存します。

戻り値: この関数は、成功した場合は True を返し、失敗した場合は false を返します。

プロシージャ:

<?php   
  
// 设置PDO连接 
$db = new PDO(&#39;mysql:host=localhost;dbname=phps&#39;,&#39;root&#39;,&#39;&#39;);  
  
// 获得用户名
$username = &#39;phpforphp&#39;; 
     
$stmt = $db->prepare("SELECT * FROM users WHERE user = :username"); 
  
// 使用bindParam函数
$stmt->bindParam(&#39;:username&#39;, $username); 
   
 $username = &#39;g4g&#39;; 
     
 $stmt->execute(); 
?>

注: SQL ステートメントは、ユーザー名として 'g4g' を使用して実行されます。その理由は次のとおりです。ユーザー名は実行時に $username を検索し、$username の最後の既知の値は ' g4g 」。

PDOStatement::bindValue() この関数は、値をパラメーターにバインドするために使用される PHP の組み込み関数です。この関数は、準備されたステートメントに使用される SQL 内の対応する名前付きプレースホルダーまたは疑問符プレースホルダーに値をバインドします。

構文:

bool PDOStatement::bindValue( $parameter, $value, $data_type )

パラメータ: この関数は、以下に説明するように、上記の 3 つのパラメータを受け入れます:

$パラメータ: 準備されたステートメントを説明するために使用されるパラメータ識別子です。これは、name という形式のパラメータ名です。

$value: このパラメータは、バインディング パラメータの値を保存するために使用されます。

$data_type: PDO::PARAM_* 定数を使用したパラメータの明示的なデータ型です。

戻り値: この関数は、成功した場合は True を返し、失敗した場合は False を返します。

手順:

<?php   
  
// 设置PDO连接
$db = new PDO(&#39;mysql:host=localhost;dbname=phps&#39;,&#39;root&#39;,&#39;&#39;);  
  
// 获得用户名
$username = &#39;phpforphp&#39;; 
    
$stmt = $db->prepare("SELECT * FROM users WHERE user = :username"); 
  
// 使用bindValue函数
$stmt->bindValue(&#39;:username&#39;, $username); 
  
$username = &#39;g4g&#39;; 
    
$stmt->execute(); 
?>

: リテラル値「phpforphp」がbindValue()にバインドされているため、SQLステートメントはユーザー名として「g4g」を使用して実行されます。関数の以前のユーザー名。 $username に対するこれ以上の変更は、準備されたステートメントには反映されません。

bindParam() と bindingValue() の違い:

bindParam()

bindParam() 関数はパラメータを指定します。 SQL ステートメント内の名前付きプレースホルダーまたは疑問符プレースホルダーにバインドされます。

bindParam() 関数は、値の代わりに変数を渡すために使用されます。

bindValue()

bindValue() 関数は、SQL ステートメント内の名前または疑問符に値をバインドします。

bindValue() 関数は、値と変数を渡すために使用されます。

お勧め: 「PHP チュートリアル http://www.php.cn/course/list/29.html

この記事これは、PHP におけるbindParam と bindingValue の違いの紹介です。それが必要な友人にとって役立つことを願っています!

以上がPHPのbindParamとbindValueの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。