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

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

WBOY
WBOYオリジナル
2016-07-21 16:07:01746ブラウズ

出典: 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" >


顧客挿入</title> ; <br> </head> <br><body> <br></html> <br> を使用するとします。 <br>http://www.freelamp.com/addcust.php?surname=Smith&firstname=Fred <br><br>このリクエストが 1 回だけ送信される場合は問題ありませんが、複数回更新されると、複数のリクエストが送信されることになります。レコードが挿入されました。 <br>この問題は、header() 関数を通じて解決できます。 addcust.php の新しいバージョンは次のとおりです: <br><br><?php <br>$query = "INSERT INTO customer <br>SET姓 = $surname, <br>名 = $firstname" ; <BR>$ connection = mysql_connect("localhost", "fred", "shh"); <br>$result = mysql_query($query, $connection); cust_receipt.php "); <br>?> <br>このスクリプトはブラウザを新しいページにリダイレクトします: cust_receipt.php: <br><br><!DOCTYPE HTML PUBLIC <br>"-//W3C//DTD HTML 4.0 Transitional//EN" <br> "http://www.w3.org/TR/html4/loose.dtd" <br><html> <br><title> <br></head< ;body> <br>私が顧客を挿入しました <br></html> この方法では、元のページが更新され続けても副作用は発生しません。 <br><br>7. ロックメカニズムを上手に使ってアプリケーションのパフォーマンスを向上させます<br> レポートを緊急に実行したい場合は、テーブルに書き込みロックを追加して、他のユーザーが読み書きできないようにして、テーブルの処理速度を向上させることができます。 <br><br>8. mysql_unbuffered_query() を使用して高速スクリプトを開発します <br>この関数は、mysql_query() 関数を置き換えるために使用できます。主な違いは、mysql_unbuffered_query() がクエリの実行後、データベースを待機したりロックしたりせずにすぐに返されることです。 <br><br>しかし、出力結果セットのサイズが不明であるため、返された行数を mysql_num_rows() 関数でチェックすることはできません。 <br> <br><br><br>http://www.bkjia.com/PHPjc/315255.html<br><br>www.bkjia.com<br><br>tru​​e<br><br>http://www.bkjia.com/PHPjc/315255.html<br><br>技術記事</p> <p align="left">出典: www.freelamp.com LAMP アーキテクチャを使用した Web サイトの場合、私は以前はインストール/構成の側面により注意を払い、自分自身が開発に携わることはほとんどなかったため、開発についてはあまり話しませんでした。もちろんこの記事の原文も…</p> <div style="display:none;"> <span id="url" itemprop="url"></span><span id="indexUrl" itemprop="indexUrl"> </span><span id="isOriginal" itemprop="isOriginal"></span> </div></div><div class="nphpQianMsg"><div class="clear"></div></div><div class="nphpQianSheng"><span>声明:</span><div>この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。</div></div></div><div class="nphpSytBox"><span>前の記事:<a class="dBlack" title="PHP_PHP を使用した Oracle データベースへの接続チュートリアル" href="http://m.php.cn/ja/faq/312128.html">PHP_PHP を使用した Oracle データベースへの接続チュートリアル</a></span><span>次の記事:<a class="dBlack" title="PHP_PHP を使用した Oracle データベースへの接続チュートリアル" href="http://m.php.cn/ja/faq/312130.html">PHP_PHP を使用した Oracle データベースへの接続チュートリアル</a></span></div><div class="nphpSytBox2"><div class="nphpZbktTitle"><h2>関連記事</h2><em><a href="http://m.php.cn/ja/article.html" class="bBlack"><i>続きを見る</i><b></b></a></em><div class="clear"></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="fluid" data-ad-layout-key="-6t+ed+2i-1n-4w" data-ad-client="ca-pub-5902227090019525" data-ad-slot="8966999616"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><ul class="nphpXgwzList"><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/1.html" title="cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法" class="aBlack">cURL を使用して PHP で Get リクエストと Post リクエストを実装する方法</a><div class="clear"></div></li><li><b></b><a href="http://m.php.cn/ja/faq/2.html" title="正規表現内のすべての式記号 (概要)" class="aBlack">正規表現内のすべての式記号 (概要)</a><div class="clear"></div></li></ul></div></div><ins class="adsbygoogle" style="display:block" data-ad-format="autorelaxed" data-ad-client="ca-pub-5902227090019525" data-ad-slot="5027754603"></ins><script> (adsbygoogle = window.adsbygoogle || []).push({}); </script><footer><div class="footer"><div class="footertop"><img src="/static/imghwm/logo.png" alt=""><p>福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!</p></div><div class="footermid"><a href="http://m.php.cn/ja/about/us.html">私たちについて</a><a href="http://m.php.cn/ja/about/disclaimer.html">免責事項</a><a href="http://m.php.cn/ja/update/article_0_1.html">Sitemap</a></div><div class="footerbottom"><p> © php.cn All rights reserved </p></div></div></footer><script>isLogin = 0;</script><script type="text/javascript" src="/static/layui/layui.js"></script><script type="text/javascript" src="/static/js/global.js?4.9.47"></script></div><script src="https://vdse.bdstatic.com//search-video.v1.min.js"></script><link rel='stylesheet' id='_main-css' href='/static/css/viewer.min.css' type='text/css' media='all'/><script type='text/javascript' src='/static/js/viewer.min.js?1'></script><script type='text/javascript' src='/static/js/jquery-viewer.min.js'></script><script>jQuery.fn.wait = function (func, times, interval) { var _times = times || -1, //100次 _interval = interval || 20, //20毫秒每次 _self = this, _selector = this.selector, //选择器 _iIntervalID; //定时器id if( this.length ){ //如果已经获取到了,就直接执行函数 func && func.call(this); } else { _iIntervalID = setInterval(function() { if(!_times) { //是0就退出 clearInterval(_iIntervalID); } _times <= 0 || _times--; //如果是正数就 -- _self = $(_selector); //再次选择 if( _self.length ) { //判断是否取到 func && func.call(_self); clearInterval(_iIntervalID); } }, _interval); } return this; } $("table.syntaxhighlighter").wait(function() { $('table.syntaxhighlighter').append("<p class='cnblogs_code_footer'><span class='cnblogs_code_footer_icon'></span></p>"); }); $(document).on("click", ".cnblogs_code_footer",function(){ $(this).parents('table.syntaxhighlighter').css('display','inline-table');$(this).hide(); }); $('.nphpQianCont').viewer({navbar:true,title:false,toolbar:false,movable:false,viewed:function(){$('img').click(function(){$('.viewer-close').trigger('click');});}}); </script></body></html>