この記事では、データベースからデータを読み取るための PHP の実装について詳しく説明しており、セキュリティの問題についても簡単に説明しています。
まずコードを見てください
コードは次のとおりです |
コードをコピー |
session_start();
$con=mysql_connect('localhost','root','root') または die('データベースへの接続に失敗しました!');
mysql_query('set names utf8');
mysql_select_db('ゲストブック');
$pagesize = 10;//各ページに表示されるメッセージレコードの数
if(isset($_GET['page'])&&$_GET['page']!='') $page=$_GET['page'];
それ以外の場合 $page=0;
$sql = "SELECT a . * 、b.name、b.email、b.qq、c.revert_time、c.revert
投稿から
LEFT JOIN revert c ON ( a.id = c.post_id ) 、ゲスト b
WHERE a.guest_id = b.id
a.id DESCで注文";
$numRecord = mysql_num_rows(mysql_query($sql));
$totalpage = ceil($numRecord/$pagesize);
$recordSql = $sql. " LIMIT ".$page*$pagesize.",".$pagesize;
$result = mysql_query($recordSql);
?>
|
見てみましょう
最初の行: 今は話さないので、それはまだ必要ありません。
2 行目 - 5 行目: 誰もが見覚えがあるはずです。ここでのプロセスは post.php にメッセージ情報を挿入する場合と同じなので、詳細は説明しません。
ページング プロセスは Web プログラミングのプロセスにおいてほぼ必須であるため、ここではページングに関する行 7、8、9、および 19 については説明しません。 。 関数。
11 ~ 15 行目では、データベース クエリ ステートメントを定義します。このステートメントでは、left join...on.. ステートメントを使用します。このステートメントの詳細な使用方法については、Mysql マニュアルのジョイント クエリのセクションを参照してください。 。
16行目を見てください、
コードは次のとおりです
| コードをコピー
|
$numRecord = mysql_num_rows(mysql_query($sql));
|
このステートメントでは、mysql_query($sql) を使用して、定義した SQL ステートメントを実行のためにデータベースに送信します。このステートメントが実行された後、外側の mysql_num_rows を使用して一致する数を取得します。 records—— これは、返されたレコードの総数です。
17 行目では、ceil 関数を使用しています。この関数の機能は、2 つの数値を除算した後、余りが 0 より大きい限り、整数部分を 1 加算することです。そして、小数部分が破棄されるため、ceil( 1/2 の結果) は、通常見られる 0.5 ではなく 1 になります。これは私たちにとって非常に便利です。ページが分かれている次の章に譲りましょう。
19 行目にはページング部分が含まれます。ただし、この行について言及する価値があるのは、PHP での文字列の追加は文字列の連結であるということです。 2 つの文字列を加算する演算子はドットです。例を参照してください:
コードは次のとおりです
| コードをコピー
|
$strFirst=”中国”;
$strTwo=”偉大な国”;
$strSum = $strFirst.$strTwo;
エコー $strSum;
|
出力結果は予想通り、大国中国です。
20 行目: ページング関数を含む SQL ステートメントを実行のためにデータベースに送信し、実行結果を $result に割り当てます。
次に、このページの関数の 128 ~ 154 行目を見てみましょう。このプログラムのフラグメント関数は、データベース内でクエリされたレコードをループアウトすることです。これがこの章の焦点です:
結果セットから行をオブジェクトとして取得するには、PHP の組み込み関数 mysql_fetch_object() を参照してください。PHP オブジェクトについては、高度なプログラミングのコラムで詳しく説明します。クエリ レコードをループするこの方法を理解するだけで十分です。 $object を使用する必要があります -> フィールド名にアクセスするだけです。実行すると、レコードがなくなるたびにポインターが下に移動するため、while ループを使用して $result のレコードを読み取ることができます。セット。最後に、ステートメント while($rs=mysql_fetch_object($result)) が形成され、mysql_fetch_object 関数がループ内で呼び出され、毎回返されるオブジェクトが $rs 変数に割り当てられます。 $rs->name を使用してメッセージを残した人の名前を取得し、$rs->post_time を使用してメッセージの時刻にアクセスできます。
post_time を表示するときにいくつかの処理を行い、date() 関数を使用しました。この関数は、1970 年の最初の秒からのタイムスタンプを返します。秒数 (GMT)。 ) それから経過したもの。 date 関数は、この秒数を必要な時刻形式に変換します。関数の 2 番目のパラメーターが指定されていない場合は、返される文字列の種類を date() 関数の最初のパラメーターで指定する必要があります。時刻形式に変換する必要がある秒数が指定されていない場合は、現在の時刻に基づいて変換されます。
Date("Y年m月d日H:i:s")の場合、出力結果は2009年4月26日11時16分20秒となります。
index.php の 132 行目に次のような記述があります:
コードは次のとおりです
| コードをコピー
|
post_time+8*3600)?>
|
これについて詳しく話しましょう。8*3600 という数字に誰もが驚くと思います。実は、その理由は非常に簡単です。 time() 関数を使用して時刻を保存する場合、この時刻は現在の時刻とちょうど 8 時間異なり、1 時間は 3600 秒です。私たちは東部におり、時間は西部よりも速いためです。それを追加する必要があります。私たちは北京時間を使用していることを忘れないでください - 東八時間帯では、これは常識です。これを行う別の方法もあります。これについては、PHP の日付関数に特化した記事で詳しく説明します。
144 行目と 146 行目は、どちらも htmlspcialchars と nl2br という 2 つの関数を使用しています。htmlspcialchars 関数は、ユーザーが入力したスクリプト コード (html と javascript) が実行されないようにするために必要です。この関数は非常に重要です。この関数がないと、ユーザーが入力した js コードと html コードはページ プログラムの一部として実行されます。これについては「PHP コードのセキュリティに関する推奨事項」の記事ですでに述べたので、詳細は説明しません。
nl2br の機能は、ページのパフォーマンスを向上させるために、データ内の n 個の改行を HTML 改行に変換することです。メッセージ情報を入力するときは、の形式を使用します。情報を保存するとき、改行は n で表されるため、ユーザーが入力した情報を保持するためにここで変換する必要があります。段落に一貫性が表示されます。
http://www.bkjia.com/PHPjc/631301.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/631301.html技術記事この記事では、データベースからデータを読み取るための PHP の実装について詳しく説明しており、セキュリティの問題についても簡単に説明しています。 まずはドゥアン・ダイを見てみましょう...