- 1 名前:nobodyさん mailto:sage [2008/11/22(土) 06:36:02 ID:???]
- このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だが分からない質問を勇気を持って書き込むスレッドです。 PHP使いが優しくコメントを返しますが、 お礼はPHPの布教と初心者の救済をお願いします。 PHP Home Page www.php.net/ jp.php.net/ くだすれPHP(超初心者用)4 pc11.2ch.net/test/read.cgi/php/1213356756/ 適当に関連スレ(マルチはだめぽ) 【PHP】下らねぇ質問はここに書き込みやがれ 69 pc11.2ch.net/test/read.cgi/php/1211879073/
- 703 名前:nobodyさん mailto:sage [2009/02/06(金) 22:07:01 ID:???]
- >>700
あれ?どうも。0がなくてもうまく取得できなかった気がしたんですが 今0を外したらPDO::FETCH_ASSOC|PDO::FETCH_GROUP同様うまくいきました。 |PDO::FETCH_GROUPがついたときは第2引数で指定したPDO::FETCH_COLUMNを基準に グループ化するのかと勘違いを… 実際は複数のカラムが必要なのでPDO::FETCH_NUM|PDO::FETCH_GROUPで 思った通りの結果が得られるようになりました。ありがとうございました。 >>701も確認ありがとうございます。
- 704 名前:nobodyさん mailto:sage [2009/02/06(金) 22:11:15 ID:???]
- fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0); で普通に取得できたが?
後進のために原因を明らかにしといてくれ
- 705 名前:nobodyさん mailto:sage [2009/02/06(金) 22:21:43 ID:???]
- >>704
もし、第2引数に0が入ってても第2カラムを取得できたんならバグだと思うよ
- 706 名前:nobodyさん mailto:sage [2009/02/06(金) 22:26:54 ID:???]
- お前は何をいっちょるんだ?
第2引数に0を入れるということは1番目のCOLUMNを用いて残りのカラムをGROUP化するってことだぞ
- 707 名前:nobodyさん mailto:sage [2009/02/06(金) 22:29:53 ID:???]
- >>778
何も問題ないが
- 708 名前:nobodyさん mailto:sage [2009/02/06(金) 22:30:55 ID:???]
- すまん誤爆した
- 709 名前:nobodyさん mailto:sage [2009/02/06(金) 22:57:48 ID:???]
- >>706
デマ書いてすまん、よくわかってなかった。 そのはずだよねぇ。
- 710 名前:nobodyさん mailto:sage [2009/02/08(日) 19:09:17 ID:???]
- <?php
try { function exception_error_handler($errno, $errstr, $errfile, $errline ) { throw new ErrorException($errstr, 0, $errno, $errfile, $errline); } set_error_handler("exception_error_handler"); fntest(); function fntest() {echo "call function";} } catch (ErrorException $exception){ echo "何かエラーだよ<br />"; echo $exception->getMessage()."<br />"; echo "line:".$exception->getline(); exit(); } ?> これを実行するとFatal error: Call to undefined function fntest() in〜と出ます 定義を先にするかtry〜catchをなくすとエラーは出ません 何がいけないんでしょうか
- 711 名前:nobodyさん mailto:sage [2009/02/08(日) 19:26:17 ID:???]
- 定義が後でtry〜catchの中だからでは?
- 712 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:14 ID:???]
- >>711
まんまやん というかだめなんですか? >次の二つの例のように、ある条件下でのみ関数が定義される場合には、その関数定義は関数がコールされる前に行われていなければなりません。 に当てはまるということでしょうか とりあえずそういうものだということで前方で定義するようにします
- 713 名前:nobodyさん mailto:sage [2009/02/08(日) 20:00:15 ID:???]
- >>710
いったいどうしたらそういう書き方ができるのか知りたいわ
- 714 名前:nobodyさん mailto:sage [2009/02/08(日) 20:35:03 ID:???]
- Perlから入った奴なんかはそういう書き方をする事があるな。
Perlは書き方によっては、関数の宣言や定義より先に呼び出しが来てもちゃんと動く。
- 715 名前:nobodyさん mailto:sage [2009/02/08(日) 21:05:08 ID:???]
- PHPだって、パース対象がグローバルなら、普通にfunctionの後置定義は有効だよ。
ifやwhileやtryやfunctionの中などの節の中は後置できないだけ。 >>710なんてそんなの百も承知で釣り質問してるに決まってるだろ。 釣られてへぼい回答してんじゃねぇぞ
- 716 名前:nobodyさん mailto:sage [2009/02/08(日) 21:07:39 ID:???]
- ツン?
- 717 名前:nobodyさん mailto:sage [2009/02/09(月) 00:04:48 ID:???]
- PHPとMySQLで学習用のWEBシステムを作っているのですが
' % 等のDBにとっては迷惑な文字列が入力された場合に、それとHTML上の特殊文字に変換する にはどうすれば良いですか? 簡単な掲示板を作ったのですが' %が入力された場合にエラーが発生し困っています。
- 718 名前:nobodyさん mailto:sage [2009/02/09(月) 00:12:47 ID:???]
- 基礎中の基礎すぐる
- 719 名前:nobodyさん mailto:sage [2009/02/09(月) 08:41:31 ID:???]
- >>717
mysql_real_escape_string addslash
- 720 名前:nobodyさん mailto:sage [2009/02/09(月) 08:53:51 ID:???]
- addslash ? syntax error
- 721 名前:nobodyさん mailto:sage [2009/02/09(月) 09:16:28 ID:???]
- データーベースにデーターをつっこむ直前に
データーベース専用のエスケープ処理をするのが普通
- 722 名前:nobodyさん mailto:sage [2009/02/09(月) 09:20:54 ID:???]
- データー(笑)
- 723 名前:nobodyさん mailto:sage [2009/02/09(月) 21:42:26 ID:???]
- >717
使える箇所ならプリペアドステートメント。これが一番安全。 ttp://jp2.php.net/manual/ja/mysqli.prepare.php ttp://jp2.php.net/manual/ja/pdo.prepare.php 使えない箇所ならmysql_real_escape_stringなど。 どの文字が危険かはDBによって違うので、MySQLにはMySQLの、OracleにはOracleの、SQLiteにはSQLiteの専用の関数がある。
- 724 名前:nobodyさん mailto:sage [2009/02/11(水) 12:21:22 ID:???]
- htmlの<base>のようにユーザのトップディレクトリを指定したいんですが、
ユーザのトップディレクトリを調べる方法はありますか?
- 725 名前:nobodyさん mailto:sage [2009/02/11(水) 13:56:50 ID:???]
- 環境は?OSとか
- 726 名前:nobodyさん mailto:sage [2009/02/11(水) 14:12:44 ID:???]
- >>725
ああすみません。 開発環境はPHP5.2.6でOSXなんですがWebサーバはまだ借りてないのでどうなるかはわかりません。 PHP5でApachサーバのところを借りようとは思ってます。 なので開発環境との違いや引っ越し時のことを考えて汎用的な関数がないかと質問しました。 一応マニュアルのファイルシステム関数は目を通したんですが…
- 727 名前:nobodyさん mailto:sage [2009/02/11(水) 14:24:23 ID:???]
- exit()ってスクリプト終了のために多用してもいいのでしょうか?
たとえばエラーチェック時にdieの代わりに自作関数呼び出して終了みたいな場合など function return_json($flag, $data){ if($flag == true) $result = $data; else $result = "ERR:".$data; $res = array( "status" => $flag, "result" => $result ); print(json_encode($res)); exit(); } if(エラーチェック1) return_json(false,"エラー1です"); //エラーなら終了 if(エラーチェック2) return_json(false,"エラー2です"); //エラーなら終了 //最後に return_json(true,"成功です。");
- 728 名前:nobodyさん mailto:sage [2009/02/11(水) 14:33:34 ID:???]
- 別にいいんでは?
- 729 名前:nobodyさん mailto:sage [2009/02/11(水) 15:13:35 ID:???]
- 関数はあくまで何かを返すだけにして、制御を握っているのは「メインのルーチン」ひとつにした方がいい。
あちこちの関数で好き勝手に処理を中断したり画面出力してたりすると、そのうち管理しきれなくなる。 同じ理由で、printするよりは文字列を返す(printは「メインのルーチン」で行なう)方がいいと思う。 俺ならreturn_json()はjsonを返すだけ(exitもprintもしない)にして function generare_json(){ if(isError1()){ return return_json(false,"エラー1です"); } if(isError2()){ return return_json(false,"エラー2です"); } return return_json(true,"成功です。"); } とし、echo generate_json()を最後に呼び出す。 exit()はスクリプトの末尾のみ、出力はこの文のみになる。
- 730 名前:nobodyさん mailto:sage [2009/02/11(水) 15:20:37 ID:???]
- つうか、正しいjson出力とエラー出力を別の関数にするかな。
boolを渡すより、return_error_json()の方が分かりやすい。
- 731 名前:nobodyさん mailto:sage [2009/02/11(水) 15:23:03 ID:???]
- >>719
ヒントをサンクス。 >>723 詳しいありがとうございます。 参考にさせて頂きます。
- 732 名前:nobodyさん mailto:sage [2009/02/11(水) 17:07:46 ID:???]
- >>726
ああもしかして、http://〜/~user/ の部分の実ディレクトリが知りたいってこと?
- 733 名前:nobodyさん mailto:sage [2009/02/11(水) 17:30:07 ID:???]
- 実ディレクトリでいいのかな?ローカルでいえば
/Applications/MAMP/htdocs/ となります。 実行ファイルがトップにあるわけではないので相対パスでのファイル指定より 基点からの絶対パスのほうがわかりやすいかなと。
- 734 名前:724,733 mailto:sage [2009/02/11(水) 17:31:27 ID:???]
- >>732
アンカーわすれてたので念のため
- 735 名前:nobodyさん mailto:sage [2009/02/11(水) 17:45:24 ID:???]
- >>733
dirname(__FILE__) とか getcwd() とか そういうこと?
- 736 名前:nobodyさん mailto:sage [2009/02/11(水) 17:47:36 ID:???]
- >>733
$_SERVER['DOCUMENT_ROOT']
- 737 名前:nobodyさん mailto:sage [2009/02/11(水) 18:00:00 ID:???]
- ユーザー関係ないじゃんw
- 738 名前:724,733 mailto:sage [2009/02/11(水) 19:15:46 ID:???]
- >>735,736
$_SERVER['DOCUMENT_ROOT']で希望のパスを得ることができました。 ありがとうございました。
|

|