MySQL データベースからデータを読み取る
SELECT ステートメントは、データ テーブルからデータを読み取るために使用されます。
テーブル名から列名を選択します
* 記号を使用すると、データ テーブル内のすべてのフィールドを読み取ることができます。
SELECT * FROM テーブル名
SQL について詳しくは、SQL チュートリアルをご覧ください。
MySQLiの使用
次の例では、myDB データベースの MyGuests テーブルから id、firstname、lastname 列のデータを読み取り、ページに表示します。
例 (MySQLi - オブジェクト指向)
<?php $ servername = " localhost " ; $ username = " username " ; $ dbname = " myDB " ;$conn =新しいmysqli ( $servername , $username , $password , $dbname ) ; //接続を確認します。
もし( $conn -> connect_error ) { die ( "接続に失敗しました: " . $conn - > connect_error ) ; $sql = " MyGuests から ID、名、姓を選択" ; $ result = $conn ->クエリ( $sql ) ; ( $result -> num_rows > 0 ) { //データを出力する while ( $row = $result -> fetch_assoc ( ) ) { エコー" id: " . $row [ " id " ] . " - 名前: " . $ row [ " firstname " ] " " . $row [ "姓" ] . " <br> " ; } }それ以外{ エコー" 0
件の結果" } $conn ->閉じる( ) ? >上記のコードは次のように分析されます。
まず、MyGuests データ テーブルから 3 つのフィールド id、firstname、lastname を読み取る SQL ステートメントを設定します。次に、変更した SQL ステートメントを使用してデータベースから結果セットを取得し、それをコピーした変数 $result に割り当てます。
関数 num_rows() は、返されるデータを決定します。
複数のデータが返された場合、関数 fetch_assoc() は結合されたセットを連想配列に入れ、ループで出力します。 while() は結果セットをループアウトし、id、firstname、lastname の 3 つのフィールド値を出力します。
次の例では、MySQLi のプロセス指向のアプローチを使用しており、その効果は上記のコードと同様です。
例 (MySQLi - プロシージャ指向)
<?php $ servername = " localhost " ; $ username = " username " ; $ dbname = " myDB " ;$conn = mysqli_connect ( $servername , $username , $password , $dbname ) //接続を確認します。もし( ! $conn ) { die ( "接続
に失敗しまし
た: " .mysqli_connect_error ( ) ) ; $sql = " MyGuests から ID、名、姓を選択" ; $ result = mysqli_query ( $conn , $sql ) ; ( mysqli_num_rows ( $result ) > 0 ) { //データを出力する while ( $row = mysqli_fetch_assoc ( $result ) ) { エコー" id: " . $row [ " id " ] . " - 名前: " . $ row [ " firstname " ] " " . $row [ "姓" ] . " <br> " ; } }それ以外{ エコー" 0
件の結果" } mysqli_close ( $conn ) ? > PDO の使用 (+ 前処理)
次の例では、準備されたステートメントを使用します。
MyGuests テーブルから id、firstname、lastname フィールドを選択し、HTML テーブルに配置しました。
例(PDO)
<?phpエコー" <table style='border: ソリッド 1px 黒;' > " ; " <tr><th>Id</th><th>Firstname</th><th>Lastname </th> </tr>クラステーブル行伸びるRecursiveIteratorイテレータ{ 関数__construct ( $it ) { 親:: __construct ( $ it , self :: LEAVES_ONLY ) } 関数現在( ) { 戻る" <td style='width:150px;border: 1pxソリッドブラック; ' > " .parent :: current ( ) . 関数beginChildren ( ) { エコー" <tr> " ; 関数終了子供( ) { エコー" </tr> " 。 " n " ; } $ servername = " localhost " ; $ username = " username " ; $ dbname = " myDBPDO " ; { $conn =新しいPDO ( " mysql:host= $servername ;dbname= $dbname " , $username , $password ) ; $conn -> setAttribute ( PDO :: ATTR_ERRMODE , PDO :: ERRMODE_EXCEPTION ) ; $stmt = $conn -> prepare ( " SELECT id、名、姓 FROM MyGuests " ) ; $stmt -> execute ( ) ; //結果セットを連想配列として設定します $ result = $ stmt - > setFetchMode ( PDO :: FETCH_ASSOC ) ; TableRows (新規RecursiveArrayIterator ( $stmt -> fetchAll ( ) ) )として$k => $v ) { エコー$ v ; } catch ( PDOException $e ) { エコー"エラー: " . $e - > getMessage ( ) ; $ conn = null ; " </table> " ;