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

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

WBOY
WBOYオリジナル
2016-07-15 13:23:26817ブラウズ

LAMP アーキテクチャの Web サイトの場合、以前はインストール/設定の側面に重点を置いていて、自分自身が開発に携わることがほとんどなかったため、開発について話すことはほとんどありませんでした。もちろん、この記事の原文も次から引用しています。
The O'Reilly Network (http://www.oreillynet.com/) で公開
http://www.oreillynet.com/pub/a/onlamp/2002 /04/04/ webdb.html
これを読んだ後、以前の開発で遭遇した問題のいくつかは簡単に解決されました。そこで私はそれを翻訳してみんなに共有しました。
1. PHP での配列の使用

データベースを操作する場合、連想インデックス付き配列を使用すると非常に役立ちます。デジタル形式での基本的な配列の走査を見てみましょう。
$temp[0] = " richmond";
$temp[1] = "タイガース";
$temp[2] = "プレミア";
for($x=0;$x
{
echo $temp[$x];
echo " " ;
}
?>
ただし、コードを保存する別の方法は次のとおりです:
$temp = array("richmond", "tigers", "premiers");
foreach ($temp as $element)
echo "$ element "; >
foreach はテキストの添え字も出力できます:
$temp = array("club" => "richmond",
"nickname" =>"tigers",
"aim" => "premiers") ; as $key => $value)
echo "$key : $value ";
?>
配列を操作するための約 50 個の関数については、PHP マニュアルの

2 で説明されています。これは非常に簡単です:
$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("SELECT cust_id, 姓,
)顧客からの名", $connection);
while ($row = mysql_fetch_array($result))
{
echo "ID:t{$row["cust_id"]}n";
echo "姓{$row["姓 "]}n";
echo "名:t{$row["firstname"]}nn";
}
?>
関数 mysql_fetch_array() はクエリ結果の行を配列に入れることができます。同時に 2 つの方法で使用 cust_id などの参照は、$row["cust_id"] または $row[0] の 2 つの方法で同時に使用できます。明らかに、前者の方が後者よりもはるかに読みやすいです。
複数テーブルの結合クエリで、2 つの列が同じ名前を持つ場合は、エイリアスを使用してそれらを分離することをお勧めします:
SELECT winery.name AS wname、
region.name AS rname、
FROM winery、region
WHERE winery。領域 ID = 領域.領域 ID ;
列名の参照は $row["wname"] と $row["rname"] です。
テーブル名と列名を指定する場合は、列名のみを引用符で囲みます:
SELECT winery.region_id
FROM winery
列名の参照は: $row["region_id"] です。
集計関数の参照は参照名です:
SELECT count(*)
FROM customer;
列名の参照は: $row["count(*)"] です。
4. 一般的な PHP のバグに注意してください

一般的な PHP デバッグの問題は次のとおりです:
もっと多くのことが期待されるのに Web ブラウザによってページが表示されない
「ドキュメントにデータが含まれていません」というポップアップ ダイアログが表示される
部分的
これらの状況の原因のほとんどは、スクリプトのロジックではなく、HTML のバグ、またはスクリプトによって生成された HTML のバグです。たとえば、このような終了タグがないと、ページを更新できません。この問題の解決策は、HTML のソース コードを確認することです。
理由が見つからない複雑なページの場合は、W3C ページ検証プログラム http://validator.w3.org/ を通じて分析できます。
変数が定義されていなかったり、変数の定義が間違っていたりするとプログラムがおかしくなります。たとえば、次の無限ループ:
for($counter=0; $countermyFunction();
?>
変数 $Counter は増加していますが、$counter は常に 10 未満です。このタイプのエラーは、通常、より高いエラー報告レベルを設定することで見つけることができます:
error_reporting(E_ALL);
myFunction(); header() 関数を使用して単一コンポーネント クエリを処理します

多くの Web データベース アプリケーションでは、一部の関数により、ユーザーが接続をクリックした後も現在のページに留まり続けることができます。私はこの種の作業を「単一コンポーネント クエリ」と呼んでいます。 」。 以下はcalling.phpというスクリプトです:
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd" >
クリック
ユーザーが上のリンクをクリックすると、action.php が呼び出されます。以下は、action.php のソース コードです:
// データベース関数
// Redirect
header("Location: $HTTP_REFERER");
exit
?>
ここで注意する必要がある 2 つの一般的な間違いがあります。
header () 関数の呼び出しには、スクリプトを停止する exit ステートメントが含まれている必要があります。そうでないと、ヘッダーが送信される前に後続のスクリプトが出力される可能性があります。
header() 関数の一般的なエラーは次のとおりです:
警告: ヘッダー情報を追加できません - ヘッダーはすでに送信されています...
header() 関数は HTML 出力の前にのみ呼び出すことができるため、先頭に空行がある可能性があることを確認する必要がありますphp 、スペースなどの

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


以前 PHP プログラムを書いていたとき、ページが更新されるときにデータベースが複数回処理される状況によく遭遇しました。 addcust.php を見てみましょう: $query = "INSERT INTO customer

SET姓 = $surname,

firstname = $firstname";
$connection = mysql_connect("localhost", "fred", "shh") ;
mysql_select_db("winestore", $connection);
$result = mysql_query($query, $connection);
?>
"-//W3C//DTD HTML 4.0 移行版//EN"
"http:// www.w3.org/TR/html4/loose.dtd" >
顧客を挿入しました。
?>
次のリンクを使用してこのプログラムを使用するとします:
http://www.freelamp.com/ addcust.php?surname=Smith&firstname=Fred
このリクエストが 1 回だけ送信される場合は問題ありませんが、複数回更新すると複数のレコードが挿入されます。
この問題は header() 関数によって解決できます: addcust.php の新しいバージョンは次のとおりです:
$query = "INSERT INTO customer
SET姓 = $surname,
firstname = $firstname"; ("localhost", "fred", "shh");
mysql_select_db("winestore", $connection);
$result = mysql_query($query, $connection);
?>
このスクリプトはブラウザを新しいページにリダイレクトします: 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() 関数で確認できません。



www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446872.html技術記事 LAMP アーキテクチャに基づいた Web サイトの場合、私は主にインストール/設定の側面に重点を置いていて、自分自身が開発に携わることがほとんどなかったため、開発について話すことはほとんどありませんでした。もちろん、この記事の原文も次からのものです: Published o...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。