1. PHP で SQL ステートメントを実行します
データベースからデータを取得するには、PHP はまず、テーブルに対して操作する SQL ステートメント (SELECT、INSERT、UPDATE、または DELETE ステートメントなど) を実行する必要があります。通常の状況では、PHP で SELECT ステートメントを実行すると、テーブルからいくつかのレコード行が見つかります。他のステートメントを実行する場合、ステートメントが正常に実行されたかどうかに関する情報のみが返されます。
<?php $host='localhost'; $user_name='root'; $password='helloworld'; $conn=mysql_connect($host,$user_name,$password);//连接MySQL if(!$conn) { die('FAIL!'.mysql_error()); } mysql_select_db('test');//选择数据库 $sql='select UserId,UserName,Gender from users'; $result=mysql_query($sql);//获取查询结果 if($result) { echo 'SQLsyntex:'.$sql.'<br/>Success'; $num=mysql_num_rows($result);//获取查询结果的行数 echo '<br/> select <b>'.$num.' </b>rows'; } mysql_close($conn); ?>通常、mysql_query() は mysql_error() とともに使用され、SQL ステートメントの実行に問題が発生した場合に、mysql_error() によって生成された情報に基づいて問題の原因を見つけることができます。
<?php $host='localhost'; $user_name='root'; $password='helloworld'; $conn=mysql_connect($host,$user_name,$password); if(!$conn) { die('FAIL!'.mysql_error()); } mysql_select_db('test'); $sql='select UserId,UserName,Gender,cc from users'; $result=mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b><br/><br/><br/>Problem:<br/>.$sql"); if($result) { echo 'SQLsyntex:'.$sql.'<br/>Success'; $num=mysql_num_rows($result); echo '<br/> select <b>'.$num.' </b>rows'; } mysql_close($conn); ?>2. PHP を使用してデータ結果セットを処理する
プログラム内で SQL ステートメントが正常に実行された後、mysql_fetch_array() を使用して特定のクエリ結果を取得できます。つまり、この関数を使用してレコードのフィールド値を取得できます。
<?php $host='localhost'; $user_name='root'; $password='helloworld'; $conn=mysql_connect($host,$user_name,$password); if(!$conn) { die('FAIL!'.mysql_error()); } mysql_select_db('test'); $sql='select id,name,sex,age from users'; $result=mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b><br/><br/><br/>Problem:<br/>.$sql"); if($num=mysql_num_rows($result)) { $row=mysql_fetch_array($result); echo '<pre class="brush:java;">'; print_r($row); } mysql_close($conn); ?>関数 mysql_fetch_array() は、この関数が結果セット内の行を返し、それを連想配列または通常の配列として扱うことを示します。デフォルトでは、返される配列は両方です。 mysql_fetch_array() によって返される配列には、フィールド値ごとに 2 つのインデックスがあります。1 つは数値でインデックス付けされ、もう 1 つはフィールド名でインデックス付けされます。
<?php $host='localhost'; $user_name='root'; $password='helloworld'; $conn=mysql_connect($host,$user_name,$password); if(!$conn) { die('FAIL!'.mysql_error()); } mysql_select_db('test'); $sql='select id,name,sex,age from users'; $result=mysql_query($sql) OR die("<br/>ERROR:<b>".mysql_error()."</b><br/><br/><br/>Problem:<br/>.$sql"); if($num=mysql_num_rows($result)) { $row=mysql_fetch_array($result); echo '<pre class="brush:java;">'; while($row=mysql_fetch_array($result,MYSQL_ASSOC)) {print_r($row); } } mysql_close($conn); ?>while ループを使用して関数 mysql_fetch_array() を複数回呼び出し、呼び出しによって返された配列を毎回変数 $row に割り当て、ループ本体で配列変数 $row を出力します。関数 mysql_fetch_array() を呼び出すときは、2 番目のパラメータを MYSQL_ASSOC として指定します。これにより、返される結果セット配列は、フィールド名によってインデックス付けされた連想配列になります。