ホームページ >バックエンド開発 >PHPチュートリアル >PHP および MySQL 開発のための 8 つのヒント_PHP チュートリアル

PHP および MySQL 開発のための 8 つのヒント_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-13 17:19:39870ブラウズ

LAMP アーキテクチャの Web サイトの場合、以前はインストール/設定の側面に重点を置いていて、開発に携わることがほとんどなかったため、開発について話すことはほとんどありませんでした。もちろん、この記事の原文も以下から引用しています:

The OReilly Network (http://www.oreillynet.com/) で公開
http://www.oreillynet.com/pub/a/onlamp/2002/04/04/webdb.html

これを読んだ後、以前の開発で遭遇した問題のいくつかは簡単に解決されました。そこで私はそれを翻訳してみんなに共有しました。

1. PHP での配列の使用
データベースを操作する場合、連想インデックス付き配列を使用すると非常に役立ちます。デジタル形式での基本的な配列の走査を見てみましょう。

$temp[0] = "リッチモンド";

$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"

echo "$temp world"

?>

ただし、次の例にはエラーがないことに注意してください:

$temp = array("one" => 1, "two" => 2);
// 出力:: 最初の要素は 1 です
echo "最初の要素は $temp[one] です。";
ただし、次の echo ステートメントが二重引用符で囲まれていない場合は、エラーが報告されるため、中括弧を使用することをお勧めします:

$temp = array("one" => 1, "two" => 2);
echo "最初の要素は {$temp["one"]} です。";

3. 連想配列を使用してクエリ結果にアクセスします
次の例を見てください。

$connection = mysql_connect("localhost", "albert", "shh");

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"]} ";

}

?>

関数 mysql_fetch_array() はクエリ結果の行を配列に入れます。この配列は 2 つの方法で同時に参照できます。たとえば、cust_id は次の 2 つの方法で同時に参照できます: $row[" cust_id"] または $row[0]。明らかに、前者の方が後者よりもはるかに読みやすいです。


複数テーブルの連続クエリでは、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["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);

for($counter=0; $counter?> 5. header() 関数を使用して単一部分のクエリを処理する

多くの Web データベース アプリケーションでは、一部の機能により、ユーザーがリンクをクリックした後も現在のページに留まり続けることがよくあります。私はこの種の作業を「単一コンポーネント クエリ」と呼んでいます。


以下は、calling.php というスクリプトです。

"-//W3C//DTD HTML 4.0 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd" >

ここをクリックしてください


このニュースには合計 3
ページがあり、現在
2

1

2

3


ユーザーが上記のリンクをクリックすると、action.php が呼び出されます。以下は action.php のソースコードです:

// データベース関数

// リダイレクト
header("場所: $HTTP_REFERER")
?>
ここで注意する必要があるよくある間違いが 2 つあります:

header() 関数を呼び出した後、スクリプトを停止する exit ステートメントを含める必要があります。そうしないと、ヘッダーが送信される前に後続のスクリプトが出力される可能性があります。


header() 関数でよくある間違いは次のとおりです:

警告: ヘッダー情報を追加できません - ヘッダーはすでに送信されています...

header() 関数は HTML 出力の前にのみ呼び出すことができるため、php の前に空行やスペースなどが含まれていないか確認する必要があります。

6. リロードの問題とその解決策

以前 PHP プログラムを書いていたとき、ページが更新されるとデータベースが再度処理するという状況によく遭遇しました。

addcust.php を見てみましょう:

$query = "顧客に挿入

SET 姓 = $surname,

名 = $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=フレッド

このリクエストが 1 回だけ送信される場合は問題ありませんが、複数回更新される場合は複数のレコードを挿入することになります。

この問題は header() 関数を通じて解決できます: これが addcust.php の新しいバージョンです:

$query = "顧客に挿入
SET 姓 = $surname,

名 = $firstname";

$connection = mysql_connect("localhost", "fred", "shh"); );

$result = mysql_query($query, $connection);

header("Location: cust_receipt.php");
このスクリプトはブラウザを新しいページにリダイレクトします: cust_receipt.php

「-//W3C//DTD HTML 4.0 Transitional//EN」

「http://www.w3.org/TR/html4/loose.dtd」>
顧客を挿入しました


このように、元のページが更新され続けても副作用は発生しません。

7. ロックメカニズムを上手に使ってアプリケーションのパフォーマンスを向上させます
レポートを緊急に実行したい場合は、テーブルに書き込みロックを追加して、他のユーザーが読み書きできないようにして、テーブルの処理速度を向上させることができます。 。

8. mysql_unbuffered_query() を使用して高速スクリプトを開発する

この関数は、mysql_query() 関数の代わりに使用できます。主な違いは、mysql_unbuffered_query() がクエリの実行後、データベースを待機したりロックしたりせずにすぐに返されることです。

ただし、出力結果セットのサイズが不明なため、返された行数は mysql_num_rows() 関数で確認できません。

このニュースには合計
3

ページがあり、現在

3
1 2

3


http://www.bkjia.com/PHPjc/532652.htmlwww.bkjia.comtru​​e
http://www.bkjia.com/PHPjc/532652.html
技術記事

LAMP アーキテクチャに基づいた Web サイトの場合、私は主にインストール/設定の側面に重点を置いていて、自分自身が開発に携わることがほとんどなかったため、開発について話すことはほとんどありませんでした。もちろん、この記事の原文も次からのものです: Published o...

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。