出典: www.freelamp.com
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] = "リッチモンド";
$temp[1] = "タイガース";
for($x=0;$x
echo $temp[$x];
echo " ";
?> ただし、コードを保存する別の方法は次のとおりです:
$temp = array("richmond ", "tigers" , "premiers");
foreach ($temp as $element)
echo "$element ";>
foreach はテキストの添字も出力できます:
$temp = array("club" => "リッチモンド",
"ニックネーム" =>"タイガース",
"目標" => "プレミア");
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] です。"; $temp = array("one" => 1, "two" => 2);
echo "最初の要素は {$temp["one"]} です。";
3. アソシエーション配列アクセスクエリ結果を使用する
以下の例を参照してください:
$connection = mysql_connect("localhost", "albert", "shh"); connection);
$ result = mysql_query("顧客から cust_id、姓、
名を選択", $connection);
while ($row = mysql_fetch_array($result))
{
echo "ID:t{$row ["cust_id"]} n";
echo "姓{$row["surname"]}n";
echo "名:t{$row["firstname"]}nn";
}
?>
function 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。領域 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; $counter<10; $Counter++)
myFunction();
変数 $Counter は増加していますが、$カウンタは常に 10 未満です。このタイプのエラーは、通常、より高いエラー報告レベルを設定することで検出できます:
error_reporting(E_ALL);
for($counter=0; $counter<10; $Counter++)
myFunction();
?>
5. header() 関数を使用して単一部分のクエリを処理します
多くの Web データベース アプリケーションでは、一部の関数により、ユーザーがこの種の接続をクリックした後も現在のページに留まり続けることができます。作品「シングルパートクエリ」。
次は、calling.php というスクリプトです:
"-//W3C//DTD HTML 4.0 Transitional//EN"
"http://www.w3.org/TR/ html4/loose.dtd" >
ここをクリックしてください!
ユーザーが上記のリンクをクリックすると、action.php が呼び出されます。 action.php のソースコードは以下の通りです:
// データベース関数
// リダイレクト
header("Location: $HTTP_REFERER")
の 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 Transitional//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" ;
$ connection = mysql_connect("localhost", "fred", "shh");
$result = mysql_query($query, $connection); 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() 関数でチェックすることはできません。
http://www.bkjia.com/PHPjc/315255.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/315255.html
技術記事
出典: www.freelamp.com LAMP アーキテクチャを使用した Web サイトの場合、私は以前はインストール/構成の側面により注意を払い、自分自身が開発に携わることはほとんどなかったため、開発についてはあまり話しませんでした。もちろんこの記事の原文も…