ホームページ >バックエンド開発 >PHPチュートリアル >PDO プリペアド ステートメント: パラメータ名にコロンは必要ですか?
PDO プリペアドステートメント: パラメーター名のコロンは何を示していますか?
概要
場合名前付きパラメータで PDO を利用する場合、パラメータ名の前にコロン (:) を含める開発者もいますが、パラメータ名を完全に省略する開発者もいます。どちらのアプローチも機能しているように見えますが、これらのコロンの意味は好奇心の対象となっています。
構文要件
SQL 文字列では、名前付きプレースホルダーにはPHP ドキュメントに記載されているようにコロン。これは、パラメータの明確な識別に役立つためです。
$insertRecord = $conn->prepare('INSERT INTO Table1 (column1, column2) VALUES(:column1, :column2)'); // ^ ^ note the colons
バインディングと実行におけるオプションのコロン
SQL 文字列とは異なり、PDOStatement:: ではコロンはオプションです。 bindParam() および PDOStatement::execute()。以下は、コロンを含むステートメントとコロンを含まないステートメントをバインドして実行する例です。
$insertRecord->execute(array( ':column1' => $column1, ':column2' => $column2 )); // or $insertRecord->execute(array( 'column1' => $column1, 'column2' => $column2 ));
なぜ機能するのか
PHP ソース コードを調べると、インタプリタがプレースホルダーにはコロンが 1 つだけ必要です。したがって、:name は有効ですが、name と ::name は無効です。
これにより、インタプリタは、bindParam() またはexecute() の name という名前のパラメータが実際には :name であると想定できるようになります。 pdo_stmt.c ファイルは、この動作を示しています。したがって、PHP は、コロンのないパラメータ名にコロンを自動的に追加します。
ベスト プラクティス
技術的には、どちらのアプローチも機能します。ただし、一貫性、読みやすさ、IDE での検索のしやすさを考慮して、コロンを使用することをお勧めします。このアプローチは曖昧さを排除し、一般に受け入れられているベスト プラクティスと一致します。
以上がPDO プリペアド ステートメント: パラメータ名にコロンは必要ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。