ホームページ >バックエンド開発 >PHPチュートリアル >PHP および MySQL 開発のための 8 つのヒント_PHP チュートリアル
LAMP アーキテクチャの Web サイトの場合、以前はインストール/設定の側面に重点を置いていて、開発に携わることがほとんどなかったため、開発について話すことはほとんどありませんでした。もちろん、この記事の原文も以下から引用しています:
The OReilly Network (http://www.oreillynet.com/) で公開
http://www.oreillynet.com/pub/a/onlamp/2002/04/04/webdb.html
これを読んだ後、以前の開発で遭遇した問題のいくつかは簡単に解決されました。そこで私はそれを翻訳してみんなに共有しました。
1. PHP での配列の使用
データベースを操作する場合、連想インデックス付き配列を使用すると非常に役立ちます。デジタル形式での基本的な配列の走査を見てみましょう。
$temp[1] = "タイガース";
$temp[2] = "プレミア";
for($x=0;$x
echo $temp[$x];
echo " ";
}
?>
ただし、コードを保存する別の方法は次のとおりです:
$temp = array("リッチモンド", "タイガース", "プレミア");
foreach ($temp として $element)echo "$element ";
foreach はテキストの添え字も出力できます:
$temp = array("クラブ" => "リッチモンド",
"目標" => "プレミア");
foreach ($temp as $key => $value)echo "$key : $value ";
?>
PHP マニュアルには、配列を扱うための関数が約 50 個説明されています。
2. PHP 文字列に変数を追加する
これは非常に簡単です:
$temp = "hello"
?>
ただし、次の例にはエラーがないことに注意してください:$temp = array("one" => 1, "two" => 2);
// 出力:: 最初の要素は 1 です
echo "最初の要素は $temp[one] です。";
ただし、次の echo ステートメントが二重引用符で囲まれていない場合は、エラーが報告されるため、中括弧を使用することをお勧めします:
$temp = array("one" => 1, "two" => 2);
echo "最初の要素は {$temp["one"]} です。";
3. 連想配列を使用してクエリ結果にアクセスします
次の例を見てください。
mysql_select_db("winestore", $connection);
$result = mysql_query("顧客から cust_id、姓、名を選択", $connection
);
while ($row = mysql_fetch_array($result))
echo "ID: {$row["cust_id"]}
";
echo "姓 {$row["姓"]}
";
echo "名: {$row["firstname"]}
";
?>
複数テーブルの連続クエリでは、2 つの列が同じ名前を持つ場合、それらをエイリアスで区切ることが最善です:
SELECT winery.name AS wname、
region.name AS rname、
FROM winery、region
WHERE winery.region_id =region.region_id
3
ページがあり、現在1
ページにあります 1
2 3
列名の参照は、$row["wname"] と $row["rname"] です。
テーブル名と列名を指定する場合、列名のみが引用符で囲まれます:
ワイナリーから winery.region_id を選択
集計関数の参照は参照名です:
数を選択(*)
顧客から;
列名の参照は $row["count(*)"] です。
4. 一般的な PHP のバグに注意してください
一般的な PHP のデバッグ問題は次のとおりです:
さらに多くのことが期待される場合に Web ブラウザによってページがレンダリングされない
さらに多くのことが期待される場合に部分的なページが表示される
これらの状況の原因のほとんどは、スクリプトのロジックではなく、HTML のバグ、またはスクリプトによって生成された HTML のバグです。たとえば、 のような終了タグがないと、ページを更新できません。この問題の解決策は、HTML のソース コードを確認することです。
理由が見つからない複雑なページの場合は、W3C ページ検証プログラム http://validator.w3.org/ を通じて分析できます。
変数が定義されていなかったり、変数の定義が間違っていたりするとプログラムがおかしくなります。たとえば、次の無限ループ:
for($counter=0; $counter?>
変数 $Counter は増加していますが、$counter は常に 10 未満です。このタイプのエラーは通常、より高いエラー報告レベルを設定することで見つけることができます:
エラー報告(E_ALL);
多くの Web データベース アプリケーションでは、一部の機能により、ユーザーがリンクをクリックした後も現在のページに留まり続けることがよくあります。私はこの種の作業を「単一コンポーネント クエリ」と呼んでいます。
以下は、calling.php というスクリプトです。
"http://www.w3.org/TR/html4/loose.dtd" >
ここをクリックしてください
このニュースには合計 3
ページがあり、現在
2
2
3
ユーザーが上記のリンクをクリックすると、action.php が呼び出されます。以下は action.php のソースコードです:
// データベース関数
// リダイレクト
header("場所: $HTTP_REFERER")
?>
ここで注意する必要があるよくある間違いが 2 つあります:
header() 関数でよくある間違いは次のとおりです:
警告: ヘッダー情報を追加できません - ヘッダーはすでに送信されています...
header() 関数は HTML 出力の前にのみ呼び出すことができるため、php の前に空行やスペースなどが含まれていないか確認する必要があります。
6. リロードの問題とその解決策
以前 PHP プログラムを書いていたとき、ページが更新されるとデータベースが再度処理するという状況によく遭遇しました。addcust.php を見てみましょう:
$query = "顧客に挿入
名 = $firstname";
$connection = mysql_connect("localhost", "fred", "shh"); );
$result = mysql_query($query, $connection);
「-//W3C//DTD HTML 4.0 Transitional//EN」
「http://www.w3.org/TR/html4/loose.dtd」>
顧客を挿入しました
http://www.freelamp.com/addcust.php?surname=スミス&firstname=フレッド
この問題は header() 関数を通じて解決できます: これが addcust.php の新しいバージョンです:
$query = "顧客に挿入
SET 姓 = $surname,
$connection = mysql_connect("localhost", "fred", "shh"); );
$result = mysql_query($query, $connection);header("Location: cust_receipt.php");
このスクリプトはブラウザを新しいページにリダイレクトします: cust_receipt.php
「http://www.w3.org/TR/html4/loose.dtd」>
顧客を挿入しました
このように、元のページが更新され続けても副作用は発生しません。
7. ロックメカニズムを上手に使ってアプリケーションのパフォーマンスを向上させます
レポートを緊急に実行したい場合は、テーブルに書き込みロックを追加して、他のユーザーが読み書きできないようにして、テーブルの処理速度を向上させることができます。 。
この関数は、mysql_query() 関数の代わりに使用できます。主な違いは、mysql_unbuffered_query() がクエリの実行後、データベースを待機したりロックしたりせずにすぐに返されることです。
このニュースには合計
3
3
1 2
LAMP アーキテクチャに基づいた Web サイトの場合、私は主にインストール/設定の側面に重点を置いていて、自分自身が開発に携わることがほとんどなかったため、開発について話すことはほとんどありませんでした。もちろん、この記事の原文も次からのものです: Published o...