goo blog サービス終了のお知らせ 

ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

PHPでMySQLを使ってトランザクション処理させるためのメモ

2005-11-04 17:45:19 | JavaとWeb

 PHPでMySQLを使って、トランザクション処理をさせたり、Prepare Statementをつかって、サニタイズをしたい場合についての話。
 このとき、mysqliを使えばいいと思うんですが、そのやりかたについて、まとめてみました。

1.PHP5とmySQL 5をいれてみる
 エクステンションで、mysqliを使えるようにしておく
 方法は、前のブログに書いた(こちら

2.mySQLにテーブルを、タイプをInnoDBにして、作成する
 たとえば、こんなかんじ(TYPE=InnoDBと最後に指定してある)

CREATE TABLE user (
code varchar(4),
name varchar(50),
PRIMARY KEY(code)
) TYPE=InnoDB;


3.HTMLを作成する
 処理するPHPを呼び出すようにする

4.PHPを作成する
以下の手順
(1)mysqli_connectで接続する
(2)mysqli_autocommitでFALSEにして、オートコミットしない
(3)ステートメントをmysqli_prepareで設定する
(4)ステートメントと値とのバインドをmysqli_stmt_bind_paramで行う
(5)値を設定する
(6)mysqli_stmt_executeでSQLを実行
(7)mysqli_commitでコミットする(またはmysqli_rollbackでロールバックする)
(8)(適当なときに)mysqli_stmt_closeでステートメントを解放する
(9)(適当なときに)mysqli_closeでクローズする

実際のプログラム(のソースコード)とかについては、
ここにまとめておきました。



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PHP 5+MySQL 5の組み合わせで、動かすためのインストールのまとめ

2005-11-04 14:34:11 | Weblog

 前に書いた、PHPのインストール方法「だけしか、しない」で、MySQLをいれただけだと
  PHP4.0+MySQL4.0ならうまくいくけど、ほかのバージョンだとうまくいかない。

 (MySQLのバージョンをあげると、エラーになる。PHPを5.0にすると、暴走する)

 そこで、この、PHP5.0+MySQL5.0のインストールメモ。




前提:
以前のPHPの入れ方のところまでは、できているとして、そのつづき

1.ファイルの存在の確認
  PHPを解凍してできたフォルダ(ここではC:phpにおいてあるとする)の下に、以下のファイルとフォルダがあることを確認します(ほかにもいっぱいある)
libmysql.dll
ext

 さらに、そのextというフォルダがあり、そのフォルダに以下のファイルがある(ほかにもいっぱいファイルがある)ことを確認します。
php_mysql.dll
php_mysqli.dll

2.php.iniの修正
■■2-1.extension_dir修正
 前の作業で、C:WINDOWSにおいた、php.iniのなかにあるextension_dirに、extフォルダのパスを指定します。以下のようなかんじ

 extension_dir = "C:¥php¥ext"

なお、¥は、(ここでは全角になっているが)本当は、半角(くわしくは、コメントの2番目参照)

■■2-2.extensionにphp_mysql、php_mysqli追加
以下のように書いてある行があるので
;extension=php_mysql.dll

前の;をはずして、こうします

extension=php_mysql.dll

ついでに(??)php_mysqliも追加してしまいます。以下の行を追加してください(php_mysqlのあとiがついているのがちがうところ)

extension=php_mysqli.dll

3.libmysql.dllをいれる
 1で指定したlibmysql.dllを、WINDOWS¥SYSTEM32 (¥は半角)の下にコピーします。


4.Apache再起動
 Apacheを再起動します。
 ここで、前のとき同様、動作確認。

5.MySQL5.0をインストール
MySQL5.0をここからダウンロードして、インストール。インストールのとき、サインアップはしなかった(スキップした)configureのほうは、やって、SJISにした以外は、基本的にデフォルト。

 で、ルートのパスワードはrootにしたら、一回目はうまくいった(気がした、失敗してたのかも。。)けど、再インストール(2度目)以降は、うまくいかなくなった。
 けど、失敗しても、パスワードはルートに設定されていたので、まいっか。

(追加11月13日)
→よくない。場合によっては、登録されないようだ。
 configureの最初の画面で、2つでてくる。このとき、下のStanderdだったかな??を設定して、最後のパスワードのところに、適当にパスワードを設定してあげると、正常終了した。


6.動作確認する
ユーザーテーブルを見るこんなPHPを書いて、みた。
<HTML>
<BODY>

<?php
	print("<H1>結果</H1>");

	//DBへ接続開始 サーバー名--localhost ユーザー名--root パスワード--root
	$dbHandle = mysql_connect('localhost','root','root');

	//DBの接続に失敗した場合はエラー表示をおこない処理中断
	if ($dbHandle == False)
	{
		print ('can not connect dbn');	
		exit;
	}

	$db = 'mysql';	//db名:システムにある  

	//SQL文 tab1表から全行を取り出し、number列の昇順に整列する
	$sql = 'select * from user';

	//SQL文を実行する
	$rs = mysql_db_query($db,$sql);
	if (!$rs)
	{
		print("SQLの実行に失敗しました。");
		exit;
	}

	//列数を取得する
	$num = mysql_num_fields($rs);

	//HTML文を出力 テーブルの開始を指定
	print("<table border=1>");

	//test表の列数と同じ回数を繰り返す
	for ($i=0;$i<$num;$i++)
	{

		//HTML文を出力 列名を <td>で囲んで出力
		print("<td>".mysql_field_name($rs,$i)."</td>");
	}

	//test表の行数と同じ回数を繰り返す
	while($row=mysql_fetch_array($rs))
	{

		//HTML文を出力 表の行の開始<tr> を出力
		print("<tr>");
	
		//test表の列数と同じ回数を繰り返す
		for($j=0;$j<$num;$j++)
		{
	
			//HTML文を出力 列の内容を <td>で囲んで出力
			print("<td>".$row[$j]."</td>");
		}
		//HTML文を出力 表の改行</tr> を出力
		print("</tr>");
	}

	//HTML文を出力 テーブルの終了を指定
	print("</table>");


	//結果レコードをメモリから開放
	mysql_free_result($rs);

	//DBへの接続を切断
	mysql_close($dbHandle);

?>
</BODY>
</HTML>


(なお、<>は、本当はすべて半角)

rootのパスワード(インストールの最後、configureで設定したもの)が"root以外だったら、
$dbHandle = mysql_connect('localhost','root','root');
の3番目の引数をパスワードにする。たとえば、パスワードが、HappyBirthdayだとしたら、
$dbHandle = mysql_connect('localhost','root','HappyBirtyday');
となる

これで、ユーザー(すくなくともルートはいるはず)が登録されていればOK



  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

東証につづき、名古屋証券取引所のシステム障害も富士通なの?

2005-11-04 13:11:23 | Weblog

 いやー、東証も、1日、前場取引停止だったけど、今日は、名古屋証券取引所(以下、名証と略す)も、今日、システム障害で前場取引停止!!

 で、このニュースによると、その障害を起こした部分の開発会社が、(また)富士通だったらしい。

 うーん、大丈夫かあ?富士通??
 お金の面というよりも、信用面で。。

 これじゃー、富士通ユーザー、うちも、あぶないんじゃないかと、思っちゃうよねえ。。。
 事実、金融庁は、全証券取引所に総点検を要請したみたいだし(このニュース)。

 まあ、日経コンピューターの記事(動かないコンピューターかな、やっぱ)であきらかになるだろうけど、それ以前に、国は、どこで問題が起きたか、詳しく情報公開してもらいたいものですよね。
 そうしないと、富士通ユーザーは、自社のシステムを点検したらいいかどうか、かんがえてしまう。。

 つーか、そう思ったら、念のために点検したほうがいいか。。

  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

中国では、ネット同棲というのが、はやってるらしい。

2005-11-04 08:59:29 | Weblog

 ここのニュースより

 そのニュースによると、こんなかんじらしい

 登録を済ませると、利用者はまず仮設の「部屋」をもらい、写真などの宣伝手段を生かして、相手を探してみる。「求愛」にめでたく成功すれば、2人のネット同棲が始まることになる。「夫婦」として一緒に「家具」や「家電製品」を買って「部屋」を飾ってみたり、「庭園」の手入れをしたり、「猫」や「犬」などのペットを飼ったりもできる。勿論、お互いに生活上の悩みや喜びなどを話し合うことも可能だ。面白いのは、「同棲」は所詮仮想空間でのものなのだが、「部屋」の「内装」をしたり、「家電製品」や「ペットフーズ」などを買ったりするには、すべて本当のお金を払わないと実現できないという点だ。


 つーことは、アバターが、同棲すればいいってことか?
 なら、今、アバターをやっている、大手ポータルサイトさんは、すぐにできそうなサービス??

 日本でも、でてきそうだ。。

 うーん、このあぶなささ、ライブドアにでも、やってもらいたいものですな(^^)


  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする