トップページphp
1001コメント322KB

【PHP】下らねぇ質問はID出して書き込みやがれ 77

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/12/08(月) 01:27:39ID:???
質問者はまず>>1を良く読むこと(必須!)
過去スレ、関連スレ、FAQなどは>>2-10辺り
次スレは>>980が立てる。10分以内に立たない場合、宣言してから立てたい人が立てること。

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 76
http://pc11.2ch.net/test/read.cgi/php/1226517332/

◆質問用テンプレ
【OS名】vine linux
【PHPのバージョン】php5.26
【連携ソフトウェア】mysql
【質問内容】

◆質問する時の注意
・ スレを上げて自分のIDを表示させること。(メール欄に何も記述しない。専ブラのsageチェックを外す)
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に関連リンクの公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。
(PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。)

◆質問後の注意
・2回目以降は最初に質問した際のレス番号を入れて、偽者防止に必ずIDを表示させること。
・解決しなくても回答をもらった場合はお礼を言うこと。
 (荒らし、煽りは除く。煽られたときも、無闇に反論せずスルーすること。)

◆回答者への注意
・誰にレスしているのか分からないと困るので、>>(アンカー)をつけて回答すること。

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0002nobodyさん2008/12/08(月) 01:28:48ID:???
■過去ログ
【PHP】下らねぇ質問はID出して書き込みやがれ 75
http://pc11.2ch.net/test/read.cgi/php/1224168721/
【PHP】下らねぇ質問はID出して書き込みやがれ 74
http://pc11.2ch.net/test/read.cgi/php/1221909788/
【PHP】下らねぇ質問はここに書き込みやがれ 73
http://pc11.2ch.net/test/read.cgi/php/1220440493/
【PHP】下らねぇ質問はここに書き込みやがれ 72
http://pc11.2ch.net/test/read.cgi/php/1218855685/
【PHP】下らねぇ質問はここに書き込みやがれ 71
http://pc11.2ch.net/test/read.cgi/php/1216291372/
【PHP】下らねぇ質問はここに書き込みやがれ 70
http://pc11.2ch.net/test/read.cgi/php/1214356448/
【PHP】下らねぇ質問はここに書き込みやがれ 69
http://pc11.2ch.net/test/read.cgi/php/1211879073/
【PHP】下らねぇ質問はここに書き込みやがれ 68
http://pc11.2ch.net/test/read.cgi/php/1209822736/
【PHP】下らねぇ質問はここに書き込みやがれ 67
http://pc11.2ch.net/test/read.cgi/php/1207863515/
【PHP】下らねぇ質問はここに書き込みやがれ 66
http://pc11.2ch.net/test/read.cgi/php/1205655807/
【PHP】下らねぇ質問はここに書き込みやがれ 65
http://pc11.2ch.net/test/read.cgi/php/1203854597/
0003nobodyさん2008/12/08(月) 01:29:18ID:???
関連リンク
■本家マニュアル   http://www.php.net/manual/ja/
■日本PHPユーザ会 http://www.php.gr.jp/
■PEARマニュアル  http://pear.php.net/manual/ja/
■メーリングリスト   http://ns1.php.gr.jp/mailman/listinfo/
■ZFマニュアル    http://framework.zend.com/manual/ja/

(以下英語)
■Smarty       http://smarty.php.net/
■Zend本家      http://www.zend.com/
■Zend Framework  http://framework.zend.com/
■php | architect   http://www.phparch.com/
■Smartyマニュアル http://smarty.php.net/manual/en/
■PECL本家(英語) http://pecl.php.net/
0004nobodyさん2008/12/08(月) 01:30:01ID:???
【簡易FAQ】
1.文字コードは何を使えばいいの?
 →1.UTF-8 2.EUC-JP のどちらか。迷うようなやつはShift_JISは使っちゃダメ。
2. このスレに書き込むときに自分のサイト名を晒したくない
 → http://example.com/が例文などのために予約されている。hogehoge.comは使っちゃダメ。
3. ブラウザに何も表示されないんだけど・・・
 → Apacheの設定を見直せ。ファイルの拡張子は何にしてて、その拡張子でPHPを呼ぶようになっているか?
4. 記号の意味がわからないけどググりようがない
 → 「@」 エラー表示を抑制、「->」 オブジェクトのメンバにアクセス、「::」 静的なメソッド呼び出し、
  「==」は暗黙の型変換をしてゆるい比較、「===」は型情報も含めた厳密な比較
5. echo "$arr['hoge']['fuga']"; と書いたらエラーになった
 → {おっぱい括弧}でくくって"{$arr['hoge']['fuga']}"にする
6. 一定時間ごとに自動的に何かしたいんだけど
 → cronかタスクスケジューラを使え。
7.extractって危険なの?
 →変数上書き&初期化忘れなどで危険。楽だからという理由だけで安易に使わない。
8. include/requireに「〜.php?a=b&c=d」のようなパラメータをつけたい
 → URL呼び出しなら可能だけど、普通のファイル呼び出しではできません
9.include/requireでURLを指定しても何も起きない
 → .phpの拡張子のファイルをURLで呼び出すと、1度PHPプログラムとして実行された結果になる。
0005nobodyさん2008/12/08(月) 01:30:32ID:???
10. そもそもインストールの時点でうまくいかない
 → 確認すべきはPHPのconfigureの引数、php.iniの内容と置き場所、
  Webサーバの設定(Apacheならhttpd.conf)、起動&再起動あたり
11. SQLの質問はどこで?
 → データベース板に誘導されるのが嫌ならPHPにうまく関連させて質問する
12. 文字列のなかに、英字のみとか数字のみとか記号が入っちゃいやんとかはどうしたらいいの?
 → ctype_〜()が手軽。複雑なパターンはpreg_〜()あたりで正規表現を使う。
13. $a1, $a2, $a3 ... のような変数名をうまく扱いたい
 → 可変変数で実現できるけど、むしろ配列を使って$a[1], $a[2], $a[3]等とするのがベター
14. echoとprintってどう違うの?
 → よく議論される話題であるが基本的に両者とも同じ。 以下ちょっとした議論。
  http://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40
15. クッキーの情報をユーザから隠したい
 → セッション使え。ただしクッキーとセッションは仕組みが違うから同じように扱うな
16. strip_tags()で削除しないタグを複数指定したい
 → strip_tags($html, '<a><p><font>'); // htmlspecialchars()も検討すべし
17. CSVやTSVのファイルをスマートに扱いたい
 → まずはfgetcsv()。ただし日本語を含むと正常に動作しない場合があるので注意だ。
18. 値渡しと参照渡し(「&」を使う)のパフォーマンスの違い
 → C言語じゃないので、パフォーマンス目的で使いわけたらダメ。参照渡しにすると逆に遅くなったりする
  参照渡しは引数に戻り値を設定したり引数を関数内で変更するなど、正しい目的に使うこと
19. ファイル入出力関数(fopen等)でリモートファイル(http://〜とか)を扱う際の限界
 → fsockopen()でソケット通信 or PEARのHTTP系 or CURLで解決
  必要ならHTTPをはじめとする各種プロトコル(どんなデータを送受信するか)はRFCなどで調べる
20. PHPからPOSTリクエストしたい
 →19.を参照
21. 画像処理一般 or GDの限界
 → ImageMagick(PECLのやつ or シェルから実行)
22. 画像・音・動画はファイルで保存?DBに保存?
 → 好きにしてください
0006nobodyさん2008/12/08(月) 04:44:19ID:???
いまnl2br という関数を知ったんだが、なにこの
便利すぎる機能。
0007nobodyさん2008/12/08(月) 08:30:56ID:E0jjD+uU
PHPの連想配列は、
添え字は、数字とキーと、
混在できるんだ?

perlでは無理だった機能だよね。
0008nobodyさん2008/12/08(月) 09:00:16ID:???
もうお腹一杯
0009nobodyさん2008/12/08(月) 10:50:40ID:j23sMbCH
【OS名】Debian Etch
【PHPのバージョン】php4.4.4-8+etch6
【連携ソフトウェア】
【質問内容】
検索エンジンのクエリの文字化け対策をしています。
Google、YAHOOともに以下の記述で文字化けを解消できています。
$refer = urldecode($refer);
mb_language("Japanese");
$refer = mb_convert_encoding($refer, "Shift_JIS", "auto");
$refer = urldecode($refer);

しかし、Googleイメージ検索だけ文字化けしてしまいます。
Googleイメージ検索のクエリを文字化けせずに表示できている方いらっしゃいますか?
若しくは、もしヒントとなる情報お持ちの方いらっしゃいましたら、どうかお助け下さい。
宜しくお願いします。
001092008/12/08(月) 11:13:42ID:j23sMbCH
文字エンコードをShift_JIS→UTF-8に統合してみました。
すると、文字化けが解消しました!
(ファイルの自体の文字エンコードをShift_JISから全てUTF-8に、
htmlの文字エンコード指定も全てUTF-8にしました)
お騒がせしました。
0011nobodyさん2008/12/08(月) 11:14:25ID:???
まず取得した文字列の文字エンコードを調べる作業に入るんだ
0012nobodyさん2008/12/08(月) 11:18:06ID:???
No more Multibyte Character !!
0013nobodyさん2008/12/08(月) 11:46:01ID:???
前スレの方へ
>996 名前: nobodyさん [sage] 投稿日: 2008/12/07(日) 16:08:22 ID:???
>配列関数のところで、配列を育成するとして一覧されており、
>ヘルプのファイル名もfunction.array.phpとなっている。
>関数でなければ、そのような分類にはならないでしょう。
>というのは状況証拠。
echoもありますよ

>998 名前: nobodyさん [sage] 投稿日: 2008/12/07(日) 16:12:07 ID:???
>そもそもhoge()の形で呼び出してる時点で関数
同様にechoもprintもあるので残念ながら短絡すぎ
0014nobodyさん2008/12/08(月) 11:53:17ID:???
何この粘着ぶり
だからechoやprintは関数ではないってちゃんと書いてるじゃん。
arrayはそこまで言い切ってないでしょ。
往生際悪過ぎ
0015nobodyさん2008/12/08(月) 11:55:28ID:???
いちいち前スレから話題ひっぱってくんなよ
どうしてもその話題したいなら揚げ足じゃなくて
Array()が関数じゃないという証明にしてくれ
0016nobodyさん2008/12/08(月) 12:01:16ID:???
今後、「array()が関数」の話題を続けたい人は隔離スレ立ててくれ。
まぁ、俺が結論だしてもいいけどww
0017nobodyさん2008/12/08(月) 12:01:19ID:???
冬休みが近づいてくるとキチガイが表れるよな
0018nobodyさん2008/12/08(月) 12:04:45ID:???
>>14-17
何言ってんの?
998が間違いだって言ってるの
0019nobodyさん2008/12/08(月) 12:11:26ID:t7PZq5hY
質問です。
例えですが、CD1枚ごとのXMLファイル(ID、タイトル、アーティスト名...)が数千、
CDごとの月別売上枚数ファイル(CDID、○年○月、枚数...)が数千ほどあったとして
それを月ごとの販売CD一覧、1年トータルでの売上枚数上位表示みたいなことをしようと
金曜にPHPの本を買ってきて土日にネット見ながら練習してみたといった習得レベルです。
で調べてて思ったんですが、上記のようなことをしようと思ったらXMLファイルでやりとりするより
sqliteを使ったほうがいいもんなんでしょうか。
ただ、大元のデータ管理はFileMakerでやっていて、XMLだと修正レコードを個別に書き出して
アップロードするだけとメンテナンスが容易そうなんですが、
SQLだとローカルのFeliMakerの修正のあとにサーバのDBの修正作業とすこし煩雑な感じがするので
どちらで進めたらいいか悩んでいます。
調べ始めたばかりでまだわかってないだけなんですが、FileMakerで修正したデータ
(xmlなりcsvなり)をもとにサーバ上のDBの特定箇所を簡単に修正することはできるのでしょうか。

テンプレの項目はわかりません。アットページズを借りようかと思っていますので
PHPは5.2.6、mysqlは4.1.22になると思います。
0020nobodyさん2008/12/08(月) 12:11:58ID:???
>>18
粘着*2 乙
問題の正誤は問題にしてない。ここはクダスレ。
arrayの議論スレじゃないんだよ。
前スレで退廃した話題を引っ張ってくるなと。
0021nobodyさん2008/12/08(月) 12:12:51ID:???
>>18
日本語わかんねーのかよ

お前がキチガイだって言ってんだよ
0022nobodyさん2008/12/08(月) 12:40:41ID:???
>>18
貴様の正論は公式で開発してる人達に通じるのかメール送ってみればいいじゃん
ここで吠えてんじゃねえぞ負け犬
0023nobodyさん2008/12/08(月) 12:41:15ID:???
>>19
文が長すぎ
0024nobodyさん2008/12/08(月) 13:01:52ID:???
>>19
csvでサーバー上のデータベースを更新するのは難しくはないけど、
今PHP本見てるレベルで安全に実装するのは大変かもね。

大本がFileMakerを管理してるマシンで*AMP環境を構築して、ODBCでFileMakerDBに接続、
*AMPのPHPからクエリを発行してリモートのMySQLを更新とかのほうが簡単な気はするけど。 
0025nobodyさん2008/12/08(月) 13:13:20ID:???
>>20
なんで前スレの話題を続けちゃいけないの?
言論封殺?
引っ張ってこられると都合が悪いから?
>>21
なぜに?理由を示してください
>>22
俺別に何とも戦ってないよ。
ただ括弧つけてコールしたからといって必ず関数とは限らないよって示しただけだよ。
0026nobodyさん2008/12/08(月) 13:14:36ID:???
うるせーこれ以上やるなら専用スレ立てるから覚悟しろ!
0027nobodyさん2008/12/08(月) 13:16:41ID:???
問答無用だ!立ててやったからこっからでてけ!

さまざまな言語仕様について熱く語る闘技場
http://pc11.2ch.net/test/read.cgi/php/1228709756/
0028nobodyさん2008/12/08(月) 13:18:54ID:???
相手しなければいいだけだよ
0029nobodyさん2008/12/08(月) 13:43:26ID:???
>>25
サービスだ、1回だけ教えてやる
> >>20
> なんで前スレの話題を続けちゃいけないの?

質問でも回答でもないからだ。
お前らがやってるのはドキュメントレベルとシステムレベルを混同してる不毛な議論
0030nobodyさん2008/12/08(月) 13:47:35ID:CarXFmyd
【OS名】windows xp
【PHPのバージョン】php5.26
【連携ソフトウェア】sqlite
【質問内容】
市販の解説本のサンプルソースを勉強中です
if (isset($key)) {
if (strlen($key) > 0) {
$sql .= " WHERE uid = $key";
}}

多少記述を省略していますが
上記の条件は $key がセットされているか?
$key が1バイト以上か?
ですよね?

最初のif文 if (isset($key)) {
は要らないのでは?と思ったのですが
必要なのでしょうか?



0031nobodyさん2008/12/08(月) 13:50:43ID:???
>>30
未定義の変数を関数に放りこみたいか?
非推奨だからNOTICEが発生する
0032nobodyさん2008/12/08(月) 13:55:23ID:???
>>30
本来は必要ないはず
必ず変数は初期化するよう心がける
初期化しない変数は使わない
これ基本
0033nobodyさん2008/12/08(月) 13:57:23ID:???
しかし、酷いサンプルだね。そんな本捨てちゃえ
0034nobodyさん2008/12/08(月) 14:30:32ID:???
>>29
回答が間違ってることの指摘だよ
もしくは回答に関連した議論の続き
自分が嫌だから他人に書き込むなって強制するのは子供だよ
0035nobodyさん2008/12/08(月) 14:39:41ID:???
>>34
お前以外の全員が、お前の粘着を嫌がってるのに気付かないのか。
かわいそうに・・・唯一の味方の>>29まで失うのか。
この上は自作自演でもして盛り上がってくれよwww
0036nobodyさん2008/12/08(月) 14:41:27ID:???
いい加減スルーしろよ
0037nobodyさん2008/12/08(月) 14:45:09ID:???
えっと、誘導先のスレに行ってくれるかな
003830です2008/12/08(月) 14:53:53ID:CarXFmyd
どうもありがとうございます

>>30
いまいち理解できませんが、意味は分かりました

>>33
勉強するのに、いいサンプルソース(DB連携付)
があればぜひ教えてください

PHPによるWebアプリケーションスーパーサンプル 第2版
http://d.hatena.ne.jp/asin/479733245X
のサンプルを勉強しているのですが


003930です2008/12/08(月) 14:55:44ID:CarXFmyd
> >>30
> いまいち理解できませんが、意味は分かりました
×30
>>32 の間違いでした
0040nobodyさん2008/12/08(月) 15:08:20ID:???
33だけど、コーディング覚えるのに本ってどうだろうな。
いまどきならPHP5ベースのフレームワークのソース呼んだ方がいい。
が、質問の趣旨に答えとくと、一応これをお勧めしとく[初めてのPHP & MySQL]

あのソースがなんで酷いか。
$keyがセットされてるかどうかもわからない状況で
エスケープもクォートもせずにWHERE句に文字列を突っ込んでる点。
0041nobodyさん2008/12/08(月) 15:20:45ID:???
>>40

>>1
004230です2008/12/08(月) 17:00:55ID:CarXFmyd
>>40
どうもです
サンプルにはちゃんとエスケープ処理してあります
今回は、引用を短く書きました。失礼しました

自分はprepare メソッドに書き換えています
0043nobodyさん2008/12/08(月) 17:17:09ID:???
>>42
そういうことね。了解。
エスケープって、こんなかんじ?
$key = is_string($key) ? "'" . mysql_escape_string($key) . "'" : "''";
その文脈で来てて、issetとかおかしいし、strlenもいらねぇよな。やっぱり変。
0044nobodyさん2008/12/08(月) 17:19:47ID:???
あぁ、ごめ、SQLiteだね。
004530です2008/12/08(月) 17:46:53ID:CarXFmyd
addslashes を使ってあります

ちょっとソースが長いので省略しますが
$sql="SELECT * FROM usr";
if (isset($key)) {
$sql .=" WHERE uid = $key";

大体こんな感じです
$key はPOSTされてきます

なんか記述がショボイ(洗練されてない)なぁとは感じています
0046nobodyさん2008/12/08(月) 18:23:33ID:t7PZq5hY
>>24
ありがとうございます。
*AMPはMacなのでMAMPをインストールしています。(ということですよね)
提示されてる内容がいまいち把握できてませんが、調べてみます。
ODBCという名前にまったく関心がなかったので忘れてましたがFM9からは
「外部SQLデータソースに接続できる」だそうでこれが旨く使えればいいんですが。
0047nobodyさん2008/12/08(月) 18:51:53ID:???
>>45
やるなら
if(isset($_POST["key"])){
$key = (int)trim($_POST["key"]);
}else{
$key = 0;
}
$sql="SELECT * FROM usr WHERE uid = ".$key;
でいいんじゃないの?
0048nobodyさん2008/12/08(月) 18:52:35ID:???
arrayは関数です
0049nobodyさん2008/12/08(月) 18:58:54ID:???
>>48
>>27
0050nobodyさん2008/12/08(月) 19:03:43ID:???
>>45,47
まさか、uidって整数なの?strlenで比較してるのに?
0051nobodyさん2008/12/08(月) 19:08:51ID:???
>>50
47だがシングルクォートないからINT型かとエスパーしたわけだが
実際にintかどうかはしらん
てかよくみたらだめぽなので修正

if(isset($_POST["key"])){
$where = WHERE uid = ".(int)trim($_POST["key"]);
}else{
$where = "";
}
$sql="SELECT * FROM usr ".$where;
0052nobodyさん2008/12/08(月) 20:27:07ID:???
arrayは関数です
0053nobodyさん2008/12/08(月) 20:28:57ID:wAMJwI03
http://drrf.freehostia.com/

このPHP探してます
配布してるところ知ってれば教えてください


ここでよかったのかな・・・
0054nobodyさん2008/12/08(月) 20:29:37ID:???
>>53
スレ違い
0055nobodyさん2008/12/08(月) 21:27:21ID:tNwQhygu
こんにちは
file_get_countentsの参照先が、gzip転送対応必須となっています
見に行かせると「ブラウザ設定のHTTP1.1を〜」など警告が出ます
この場合phpに取得させるにはどうすればよいのでしょうか?
よろしくお願いいたします
0056nobodyさん2008/12/08(月) 23:21:48ID:E0jjD+uU
<?PHP

これって、PHP、の部分を大文字で
書いても、いいの?
0057nobodyさん2008/12/08(月) 23:22:48ID:???
やってわかることはやってから質問しろ
0058nobodyさん2008/12/08(月) 23:22:56ID:E0jjD+uU
質問

varって予約語?
0059nobodyさん2008/12/08(月) 23:24:43ID:???
態度をわきまえて質問しろ!
0060nobodyさん2008/12/08(月) 23:25:13ID:???
おっと、ゆとりに熱くなってしまった^^;
0061nobodyさん2008/12/08(月) 23:40:18ID:???
>>58
http://jp.php.net/manual/ja/reserved.php
0062nobodyさん2008/12/08(月) 23:52:51ID:???
varって変数を定義するときに使うのか。
おまいら、そんなカンタンなことも答えられないのか。
0063nobodyさん2008/12/08(月) 23:56:36ID:???
<?php
$a=array('aaaaaa',55,5.876,NULL,FALSE);
var_dump($a);
?>

これ実行するとおもろい。
NULLはなんの型でもなくNULLなんだ、ってわかる
0064nobodyさん2008/12/08(月) 23:58:38ID:???
何をいってるんだお前は
0065nobodyさん2008/12/09(火) 00:28:07ID:???
FALSEはbool型だけど、
NULLjは、なんの型でも無い。
0066nobodyさん2008/12/09(火) 00:50:08ID:???
NULLはnull型という特殊な型です
ていうか配列に異なる型いれるなよ気持ち悪い
0067nobodyさん2008/12/09(火) 00:50:15ID:???
NULLはNULL型だが?
0068nobodyさん2008/12/09(火) 00:50:21ID:AVrbWSbl
void flush ( void )

関数の使い方のマニュアルの説明書きで、
()の中が、voidって書いてあるのは、
何も入れるな、って意味?
0069nobodyさん2008/12/09(火) 00:50:46ID:???
すまんかぶったw
0070nobodyさん2008/12/09(火) 00:51:16ID:???
んでも
>>63
のコードを実行すると、NULLのところだけ、
型の指定が無い。これは
NULLだけ、なんの型でもないことを示唆している。
0071nobodyさん2008/12/09(火) 00:51:17ID:???
>>68
全然違う
0072nobodyさん2008/12/09(火) 00:51:47ID:???
>>70
していない
0073nobodyさん2008/12/09(火) 01:02:59ID:???
http://startup.dino.co.jp/2008/05/27/php-7/

このページわかりやすい
0074nobodyさん2008/12/09(火) 01:04:00ID:???
blogでだらだら書いててお世辞にも読みやすいとは言えない
コードも初心者丸出し
0075nobodyさん2008/12/09(火) 01:08:08ID:4nXhjr9t
質問いたします。
mailサーバーにmailを送るのはsend_mail関数でできるのですが
mailサーバーに送られたmailの添付画像をPHPで読み込むには
何関数を使えばよいのでしょうか?
よろしくお願いします。
0076nobodyさん2008/12/09(火) 01:20:18ID:???
>>75
http://jp.php.net/manual/ja/refs.remote.mail.php
お好きなのを
0077752008/12/09(火) 01:54:40ID:4nXhjr9t
>>76
じっくり見たのですが俺のバカな頭ではわからない orz
もう無理でしょうか?
0078nobodyさん2008/12/09(火) 01:59:19ID:???
     *      *
  *  無理です  +
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
0079752008/12/09(火) 02:24:53ID:4nXhjr9t
無理は承知なのですがズバっとmailサーバーに送られた添付データを
読み込むにはPHPの何関数を使えば大丈夫ですか?
0080nobodyさん2008/12/09(火) 02:42:17ID:???
>>79
http://jp.php.net/manual/ja/refs.remote.mail.php
お好きなのを
008130です2008/12/09(火) 06:29:29ID:pNYuh3pR
>>47
ご丁寧にありがとうございます

この処理は一番最初の時点でも実行されます
(つまり$key にPOSTされていない)

その場合でも、書いて頂いた記述でいいのでしょうか
008230です2008/12/09(火) 08:54:44ID:pNYuh3pR
すいません、再度お願いします
PDOを使っています
mysql_num_rows ←PDOでコレに該当する物がないのです

http://php.plus-server.net/pdostatement.rowcount.html
ココをみると SELECT COUNT(*) 文を発行してから
再度SELECTしろ となっています

2回同じようなSQLを実行しないといけないのですが
遅くなりそうでイヤなのですが
気にしなくていいのでしょうか

if (mysql_num_rows($res) <= 0) { return; }
この判定(ゼロ判定)のためだけに、SELECT COUNT(*)
するのがアホらしいのですが
0083nobodyさん2008/12/09(火) 09:20:50ID:???
select count(*)は遅くないし
0084nobodyさん2008/12/09(火) 09:27:49ID:???
>>82
if (mysql_num_rows($res) <= 0) { return; }
この目的は行数を得ることですか?
行数を得る目的ならcount(*)が適切でしょう

しかし、結果セットがない場合はreturnだったら、
pdoのイテレーターでそのまま実装できるのでは?
0085nobodyさん2008/12/09(火) 10:30:29ID:???
>>81
>>51
0086nobodyさん2008/12/09(火) 10:32:37ID:???
SQL_CALC_FOUND_ROWS
0087nobodyさん2008/12/09(火) 10:37:24ID:???
>>83
count()は遅いぞ?
単体サーバーで500万件くらいいれると
どんなにフル最適化しても2〜5秒はcountにとられるぞ

ポスグレだけどな…
0088nobodyさん2008/12/09(火) 11:52:40ID:???
さっさと質問に答えろ屋!!
0089nobodyさん2008/12/09(火) 12:12:03ID:6VdqcFEv
【OS名】red hat linux 9
【PHPのバージョン】php 4.4.6
【連携ソフトウェア】なし
【質問内容】

phpで作られたフリーのカートシステム「zen cart」を利用しているのですが、
クライアントの情報を利用するため、自前で作成したプログラム(log.php)を、index.phpからincludeするように改造しました。
作成したプログラムは、商品のコンバージョンを計るためです。

log.phpの内容

<?

extract($_GET);
extract($_POST);
session_start();

/* セッションに変数を登録 */
$_SESSION['dvd_date'] = date("Y/m/d l H:i:s");

?>

index.phpが呼ばれるとlog.phpが動作して、ちゃんとセッションがサーバーに書き込まれています。
しかし、zen cart で買い物をすると、カートに商品が入りません。おそらく、zen cartの中でもセッションを
使用しているからだと思います。log.phpがzen cartのセッションをクリアしてしまっているせいかも
しれないです。

このようや事象を回避する方法はありますでしょうか?
009030です2008/12/09(火) 12:30:49ID:pNYuh3pR
>>84
>if (mysql_num_rows($res) <= 0) { return; }
>この目的は行数を得ることですか?
行数把握が目的ではなく、結果セットが無い場合(該当レコードゼロ)
の場合の対処が目的です

>結果セットがない場合はreturnだったら、
>pdoのイテレーターでそのまま実装できるのでは?
ここが分かりません
どのような記述でしょうか?
0091nobodyさん2008/12/09(火) 12:34:59ID:???
>>89
究極の解決方法は
他人が作ったものを使わない!

それはさておき
確実に
session_start();
をよんでるからだろ…これをコメントアウトすれば?
あとセッションが利用しているかしていないかの判定入れて
利用してなければスタートするようにする
0092nobodyさん2008/12/09(火) 12:47:14ID:???
>>90
あんまスマートじゃないけど許してね
たとえばこんな感じ
$row = $stmt->fetch();
if (false === $row) return ;
do {
//処理
} while($row = $stmt->fetch());
0093nobodyさん2008/12/09(火) 12:51:29ID:6VdqcFEv
>>91


session_start でやはり初期化されるようですね。
おっしゃるとおりやってみます

サンクス湖
009430です2008/12/09(火) 12:56:02ID:pNYuh3pR
>>92
ありがとうございます
fetchして判定しようとは思ったのですが
カレントレコードが移動してしまうのでどうしたら
いいのだろうかと模索していました

whileではなく、do while ですね
ありがとうございました
0095nobodyさん2008/12/09(火) 13:26:32ID:???
while ($row = $db->fetch()) {
}
してれば件数0の場合は実行されないからいいんじゃないの?
0096nobodyさん2008/12/09(火) 14:26:08ID:???
>>95
件数0件のときを別処理にしたいということじゃない?
0097nobodyさん2008/12/09(火) 14:53:16ID:???
じゃ$db->fetch()なり$rowなりで判定すればいいじゃない
0098nobodyさん2008/12/09(火) 14:54:31ID:???
回答をまとめてくれないとわからない件
0099nobodyさん2008/12/09(火) 15:13:34ID:???
>>97
ん、たとえば、どんな感じ?
0100nobodyさん2008/12/09(火) 17:37:02ID:???
>>94
日本語としては「じっぽん」が正しいが、レッドブックの「とおほん」(×とうほん)も間違いではない
ただ朝鮮人や一部の関西人が良く使う「じゅっぽん」は明らかに間違い
これを使っていると日本人である事を疑われるので気を付けるように
0101nobodyさん2008/12/09(火) 17:37:19ID:???
>>89
俺が有料で改造してあげゆ
■ このスレッドは過去ログ倉庫に格納されています