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

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

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

◆前スレ
【PHP】下らねぇ質問はID出して書き込みやがれ 101
http://hibari.2ch.net/test/read.cgi/php/1289793607/
◆質問用テンプレ
【OS名】CentOS
【PHPのバージョン】5.3
【連携ソフトウェア】MySQL ImageMagick
【質問内容】

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

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

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

【その他諸注意】
・SQL・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
0552nobodyさん2011/01/13(木) 11:27:19ID:???
Windows使っているなら、コマンドプロンプトから
空きポートにpingを送って、通るか否か調べるって事だろ?
さすがにヒントも糞も無いと思うんだが・・。
0553nobodyさん2011/01/13(木) 11:29:19ID:???
>>546
ID出しやがれボケが
05545462011/01/13(木) 11:31:24ID:HlCtfQfp
>>552
いや・・・>>548でも書いた通り「PHPのWeb上で」表示させたいのです・・・
でもPHP上でping送信を使えばいいのかな

>>553
ageるほどでもないと思っていたので失礼しました
0555nobodyさん2011/01/13(木) 11:35:33ID:???
よくMMOサイトでサーバー稼動中みたいなアイコンのあれでしょ。
全てのサービスを同一のパソコンで稼動させていたとしても、
結局は素直に各サービスのポートを叩いて確認するしかないのでは?。
05565462011/01/13(木) 11:40:45ID:HlCtfQfp
>>555
まさにそんな感じです。
おそらくMMO運営は負荷軽減のため複数の回線を使用していると思いますが。
そういう別のWANの場合どう指定してあげればいいのかなという事です。
>>550のやり方ではWAN指定できなかったので、pingで跳ね返ってくるか確認という事でしょうか?
0557nobodyさん2011/01/13(木) 11:44:45ID:???
外から見たいのを自分のとこで表示したいなら、
javascriptでどうよ。
http://www.gnucitizen.org/blog/javascript-port-scanner/
0558nobodyさん2011/01/13(木) 11:45:27ID:???
ポートにpingとかw
0559nobodyさん2011/01/13(木) 11:47:23ID:???
そもそも特定のポートが「使われていない」状態ってあるのか?
俺も鯖管理してるけど、ポートがふさがってる時は
だいたい鯖が落ちてるかiptablesの設定が悪いかだと思うけどな。
つまり、特定のポートだけ発生する現象ではないと思うが。
05605462011/01/13(木) 11:51:31ID:HlCtfQfp
>>557
ありがとうございます、ソース覗いてみました。
これ使えるかもしれませんね。PHP単体は諦めて1回試してみます!

>>559
ポートがふさがるっていう概念はどうかと思いますが
「使われていない」という状態はありますよ。
アプリを通してポートを完全に開通させ、アプリが終了してたらバウンドしなくなりますし。
0561nobodyさん2011/01/13(木) 11:58:22ID:???
>>550のソースのどこがダメだったの?

fsockopenのところを他サーバのipアドレスにしたけど
俺のとこではちゃんと動いてるよ?
0562nobodyさん2011/01/13(木) 12:00:26ID:???
>>560
ああ、「使われているかどうか」をチェックしたいのか。
誤解してた。すまん。
0563nobodyさん2011/01/13(木) 12:42:18ID:???
俺はpingなんて言ってないぞw
pingは通るけどサービスが死んでいるとかよくあるはなしさ
0564nobodyさん2011/01/13(木) 14:14:37ID:???
>>552
0565nobodyさん2011/01/13(木) 15:51:08ID:eIBAKAY8
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1253669757
この質問に答えてくれ
0566nobodyさん2011/01/13(木) 17:48:30ID:???
使われているか
 > WAN(外部)側のIPのポートが使われてるか
 > そもそも特定のポートが「使われていない」状態ってあるのか?

開放しているか
 > ちなみにポート開放のスキャン

空いているか
 > 空きポートにpingを送って、通るか否か調べるって事だろ?

塞がっているか
 > ポートがふさがってる時は


日本語での表現は難しい。
0567nobodyさん2011/01/13(木) 17:59:33ID:NmcnbSQP
プログラムというか、ロジックの考え方についての質問です。

携帯向けサイトを作る時、管理画面などでセッションの管理にクッキーを利用しない設定が必要ですよね。
でも、そのサイトをPCでも使うのなら、PCでの操作にはクッキー利用するのが普通だと思います

1)この条件を両立させたい場合、以下のようにするわけでしょうか?
 ・php.iniでクッキー利用を有効に
 ・携帯向け管理画面(ディレクトリが独立してるなら)のディレクトリに、クッキー無効の.htaccessを設置

また、そもそも.htaccessの効果がよくわかりません。
2)設置したディレクトリ以下に対して、http.confやphp.iniなどでの設定よりも優先される命令をできるってことですか?

3)1)についてですが、携帯向け管理画面のディレクトリが独立していない場合、
 たとえばフレームワークを使っていてコントローラをPC版と共通化し、viewの出力のみ
 携帯専用の出力させていいる時などは「.htaccessをディレクトリに設置」て無理ですよね。
 その場合はどんな風に作ったら効率的なんでしょうか?
 セッション使わないとなるとコントローラ・アクションのソースそのものが違ってくるから
 素直に携帯向け管理画面コントローラとして独立させるのが結局賢くなるんでしょうか?

PC版と携帯版、どんな風に作るのが効率的で管理しやすいんでしょうか?
もちろんスキルによるとは思うので、参考として「こんな風にしている」という話を聞きたいです。

よろしくお願いします
(自分はphp5とzendFWを使っています)
0568nobodyさん2011/01/13(木) 18:03:50ID:???
>>567
そもそも携帯とPCでphp.iniの設定を分けなくて良い

PHPでケータイからセッションを使う場合の設定方法 | ke-tai.org
http://ke-tai.org/blog/2007/12/12/php_session_new/
0569nobodyさん2011/01/13(木) 18:36:32ID:???
>>567

> そのサイトをPCでも使うのなら、PCでの操作にはクッキー利用するのが普通だと思います

何が「普通」なのだろうか?

この発想から課題が発生しています。
0570nobodyさん2011/01/13(木) 18:41:15ID:???
普通だろks
0571nobodyさん2011/01/13(木) 18:51:38ID:???
偏屈くん
0572nobodyさん2011/01/13(木) 19:01:40ID:???
別に難しく考える必要はない
携帯なら携帯固有情報をパソコンならクッキーを焼けばいい
セッションを張った時点で勝手に焼きよるけど
0573nobodyさん2011/01/13(木) 20:16:36ID:???
「空きポートにpingを送る」の意味がわからん。
書いてる奴は理解してんの?
0574nobodyさん2011/01/13(木) 20:24:06ID:???
>>567
ディレクトリが独立してなくても.htaccessの中で機種判別して
携帯だったら〜を設定、ってすればいい。

.htaccessは対象ディレクトリに限ってhttp.confやphp.iniの設定を
上書きすると考えていい。
0575nobodyさん2011/01/13(木) 20:46:17ID:???
>>573
pingで送るのだけがpingじゃないからみんな分かってると思うよ。
0576nobodyさん2011/01/13(木) 21:58:58ID:???
そんなくだらん言い訳は要らんw
0577nobodyさん2011/01/13(木) 22:06:09ID:???
ガラケーの携帯サイトってほんと脆弱性の固まりだな…
セッションハイジャック系が難なく出来る時点で終わってるわ
0578nobodyさん2011/01/13(木) 22:17:18ID:???
そんなことしたら不正アクセスで捕まります
0579nobodyさん2011/01/13(木) 22:25:00ID:???
ところがどっこいグレーゾーンなんですわ
それは高木ちゃんも言ってるんだよね
0580nobodyさん2011/01/13(木) 23:23:47ID:???
高木がグレーと言ったら何でもグレーなのか?
判断するのはお前や高木じゃないことは確かだ
0581nobodyさん2011/01/13(木) 23:28:42ID:???
はぁ、最近の奴は法律もわからないのかねぇ…
裁判記録を追ったりも出来ない情弱さんなら致し方ないかぁ…
0582nobodyさん2011/01/14(金) 00:24:08ID:???
>>573
もう>>552を責めないで下さい。
上から目線で無知を晒してしまって恥ずかしいとか、
質問者を少なからず混乱させてしまって申し訳ないとか、
そういった常識的な対応は匿名掲示板ですので期待しないで下さい。
05835672011/01/14(金) 00:43:04ID:???
皆さん回答ありがとうございました
勉強になりました
0584nobodyさん2011/01/14(金) 02:17:33ID:???
>>581
高木の発言を鵜呑みにするような情弱さんと一緒ですね
0585nobodyさん2011/01/14(金) 07:57:41ID:???
>>584
裁判記録とか見てたら鵜呑みじゃないんじゃないの?おれは良く分からんけど
0586nobodyさん2011/01/14(金) 08:00:53ID:???
高木が裁判記録を追わないで記事を書き続ける話しは、このスレで良いのですか?
0587nobodyさん2011/01/14(金) 08:04:49ID:???
有名な人に無名な奴が文句を言ってるさまが何とも滑稽w
0588nobodyさん2011/01/14(金) 08:18:52ID:???
もう高木ブーさんの話はやめにしようぜ
それよりも森末慎二の話しようよ
0589nobodyさん2011/01/14(金) 09:39:14ID:x5/cEkaG
PEAR:MDB2のprepareがうまく動きません。

// 接続
$this->db = MDB2::connect(-省略-);

//接続が失敗したとき
if(MDB2::isError($this->db)){
   echo "データベース接続失敗";
   exit;
}else{
   echo "データベース接続成功";
}

//準備
echo "テスト出力A";
$sql = "SELECT * FROM USER_TBL WHERE USER_NO = ?";
$stms = $this->db->prepare($sql);
echo "テスト出力B";

//実行
$res = $stms->execute(array(1));

//結果の取得
$row = $res->fetchRow();
print_r($row):

このようなソースを書いているんですがデータベース接続成功と
テスト出力Aは表示されますが、Bの表示がなくどうもprepareの所で処理が
終了しているようです。これは何が原因でしょうか?ご教授願います。
0590nobodyさん2011/01/14(金) 09:54:10ID:???
>>589

> Bの表示がなく

・Bの表示だけが無い
・B以降の表示が無い

0591nobodyさん2011/01/14(金) 10:08:43ID:x5/cEkaG
>>589
すいません、B以降の表示が全てありません。
0592nobodyさん2011/01/14(金) 10:44:19ID:???
PEARとか使ったこと無いから答えられない
俺正直だからわからないときはわからないと言う
高木みたいに知ったかぶりはしない
0593nobodyさん2011/01/14(金) 10:54:34ID:x5/cEkaG
>>592
そうですか、ありがとうございます。
どなかたわかる方いらっしゃいますでしょうか?
0594nobodyさん2011/01/14(金) 11:11:20ID:???
他にわかる人がいるかどうか、俺にはわからない
0595nobodyさん2011/01/14(金) 11:17:02ID:???
PEARは使わないし内容を見る気もないけど
たぶん、$stmsのオブジェクトが無い
0596nobodyさん2011/01/14(金) 11:23:18ID:???
プレースホルダにバインドしてないとか・・・?
0597nobodyさん2011/01/14(金) 11:24:42ID:???
エラーログを確認するのが先
0598nobodyさん2011/01/14(金) 11:28:56ID:???
echo "テスト出力B";

if(PEAR::isError($stms)){
echo "prepare失敗". $stms->getMessage();
exit;
}
0599nobodyさん2011/01/14(金) 11:32:09ID:x5/cEkaG
>>595
ありがとうございます。
オブジェクトが無いですか。

SQL文をそのままphpmyadminで
実行すると問題ないですし

prepareでなく、queryを使って
SELECT * FROM USER_TBL
を実行すると問題なく表示されました。

なぜかprepareのみの挙動がおかしい状態です。
0600nobodyさん2011/01/14(金) 11:35:29ID:x5/cEkaG
>>598
ありがとうございます。

教えていただいたとおりにやってみましたが
テスト出力A以降はなにも表示されない状態です。
06015962011/01/14(金) 11:36:54ID:???
>>589
USER_NO = ?
の?に値を何も設定しているように見えないのですが、
このあたりはだいじょうぶですか?
0602nobodyさん2011/01/14(金) 11:37:10ID:???
どんな環境か知らんがphp.iniでエラーメッセージ全開にしろ
基本の基本
0603nobodyさん2011/01/14(金) 11:39:30ID:???
自分のとこではこれで動くので分かりませんな。
USER_NOが1のデータがないとかそういうことはないよね?
0604nobodyさん2011/01/14(金) 11:44:18ID:x5/cEkaG
>>602
ありがとうございます。

display_errors = On
を入れてみましたが、表示はなにも変わりませんでした。

>>603
ありがとうございます。
はい、DBを確認しましたがデータは存在します。
0605nobodyさん2011/01/14(金) 11:47:32ID:???
PEARが壊れてる?
0606nobodyさん2011/01/14(金) 11:47:51ID:???
// 準備
echo "テスト出力A";
/*@*/ var_dump( $this -> db -> getMessage() );
$sql = "SELECT * FROM USER_TBL WHERE USER_NO = ?";
/*@*/ var_dump( $this -> db -> getMessage() );
$stms = $this->db->prepare($sql);
/*@*/ var_dump( $this -> db -> getMessage() );
echo "テスト出力B";

準備部分を上のように書き換えて、実行した結果はどうなりますか?
0607nobodyさん2011/01/14(金) 11:54:06ID:x5/cEkaG
>>605
ありがとうございます。
ダウンロードしなおすべきでしょうか?

>>606
ありがとうございます。
表示されるものが変わりました。

Fatal error: Call to undefined function: MDB2_Driver_mysql::getMessage(). in -省略-MDB2/MDB2.php on line 1936

関数がないというエラーでしょうか。
0608nobodyさん2011/01/14(金) 11:55:19ID:???
>>604
display_errors = On
error_reporting = E_ALL | E_STRICT
log_errors = On
0609nobodyさん2011/01/14(金) 11:59:16ID:???
あれ?

PEAR:MDB2 で getMessage() は使えないの?

0610nobodyさん2011/01/14(金) 12:11:52ID:???
エラー出た時だけ使えるんだな。
出てないときは undefindになる・・・
0611nobodyさん2011/01/14(金) 12:21:26ID:???
$this->db =& MDB2::connect(-省略-);
しないとダメとかいうPHP4オチ
0612nobodyさん2011/01/14(金) 12:26:25ID:x5/cEkaG
>>611
ありがとうございます。
やってみましたが、ダメでした。

レンタルサーバー : XREA
PHP : 5.2.5
MySQL : 5.1.22
0613nobodyさん2011/01/14(金) 12:42:28ID:???
全ての情報を開示していないと踏んで文字コードの問題とか言ってみたりする

最新バージョンを使っているせいかと思ったらFatal error多いーな
0614nobodyさん2011/01/14(金) 12:45:43ID:???
>>610

エラーが出ているときだけに使えるのならば、

// 準備
echo "テスト出力A";
$sql = "SELECT * FROM USER_TBL WHERE USER_NO = ?";
$stms = $this->db->prepare($sql);
/*@*/ var_dump( $this -> db -> getMessage() );
echo "テスト出力B";

これで使えるってこと?
0615nobodyさん2011/01/14(金) 12:49:34ID:???
あとは間抜けにもフィールド名が一致しないとかそういうくだらない話だろうな
情報の小出しに振り回される人々w
0616nobodyさん2011/01/14(金) 12:52:24ID:???
prepareでエラーが出ても、それが入るのは $stmsだな。
エラーがなければ$stms->getMessage()も undefinedだが。
0617nobodyさん2011/01/14(金) 13:10:49ID:x5/cEkaG
>>613
文字コードはファイル、DB共にUTF-8で統一しています。

>>614
やってみました。
しかし、出力Aまでしか表示されずエラーメッセージもありません。

>>615
フィールド名は何度か確認しましたが一致しています。

0618nobodyさん2011/01/14(金) 14:57:03ID:???
そもそもSELECT * FROM USER_TBLだけで読めるのか、
あとアンダバーで何かトラブルがあった気がする。
0619nobodyさん2011/01/14(金) 15:09:17ID:x5/cEkaG
>>618
queryメソッドを使って
SELECT * FORM USER_TBLで読めました。
0620nobodyさん2011/01/14(金) 15:20:32ID:???
もしかしてフィールド名にSQLの予約語を使ってないかw
0621nobodyさん2011/01/14(金) 15:31:15ID:x5/cEkaG
>>620
http://dev.mysql.com/doc/refman/5.1/ja/reserved-words.html

ここで確認しましたが、使っていませんでした。
0622nobodyさん2011/01/14(金) 16:22:34ID:???
$stms = $this->db->prepare($sql);
if (MDB2::isStatement($stms)) {
echo "実行ok";
}
else if (MDB2::isError($stms)) {
echo "error";var_dump($stms->getMessage());exit;
}
else {
echo "その他";
exit;
}
echo "テスト出力B";
0623nobodyさん2011/01/14(金) 16:31:27ID:x5/cEkaG
>>622
やってみました。
しかし、prepareをやっている行から下にある
echoはどれも表示されません。

prepare行の所でプログラムが強制終了しているのでしょうか?
0624nobodyさん2011/01/14(金) 17:00:22ID:???
だから$stmsオブジェクトがないんだって。
それはクエリーに問題があるからで、しかも失敗している部分はテーブルから先にある。

もしかして・・・こんなオチ?

SELECT * FROM USER_TBL WHERE USER_NO = '?'
0625nobodyさん2011/01/14(金) 17:13:22ID:x5/cEkaG
>>624
$stmsにオブジェクトがない事によって
それ以降のecho等も実行されないわけですか?

?に''をつけてみましたが同じ結果でした。

別のサイトで、PEAR::MDB2ではなくPEAR::DBを使っていたので
それを流用し、DBを使って同じようにprepareからexecuteを実行すると目的の結果が得られました。

>>605さんがおっしゃられているように、PEARが壊れている等でしょうか?
0626nobodyさん2011/01/14(金) 17:37:36ID:???
prepare呼び出し中に落ちる。エラーメッセージもエラーログもなし。(ほんとか?)
ならPEAR::MDB2のソースを追ってみればいい。

PEARが壊れている。XREA固有の何かがある。
等の環境問題なら自宅に別の環境を作ってみればいい。
0627nobodyさん2011/01/14(金) 17:41:37ID:???
>>623
ならprepareが失敗してるから>>605の言う壊れてる可能性もある
SQLを
SELECT * FROM USER_TBL WHERE USER_NO=?
と
SELECT * FROM USER_TBL WHERE USER_NO=:testdata
でやってみて

>>624
$stmtがオブジェクトじゃなくても>>622のコードは実行できる
但しprepareが正常に動作していたらな
0628nobodyさん2011/01/14(金) 17:50:22ID:???
あーついでにこっちも・・・

$sql = "SELECT * FROM USER_TBL WHERE USER_NO = ?";
$stms = $this->db->prepare($sql,array('integer'));
if (MDB2::isStatement($stms)) {
echo "実行ok";
}
else if (MDB2::isError($stms)) {
echo "error";var_dump($stms->getMessage());exit;
}
else {
echo "その他";
exit;
}
echo "テスト出力B";
0629nobodyさん2011/01/14(金) 17:53:13ID:N58y3KzQ
php + MySQL で

MySQLで取得したテーブルデータを格納した複数の配列の中の【一部の要素】でソートをしたいのですが、どうすればよいでしょうか?
なお各配列ごとに【一部の要素】の名前が違うので、どうしたものか困り果てております。

array ("data1",
 array (a = aaa, b = bbb, c = 1)
 array (a = aaa, b = bbb, c = 2)
 array (a = aaa, b = bbb, c = 3)
)
array ("data2",
 array (a = aaa, b = bbb, d = 4)
 array (a = aaa, b = bbb, d = 5)
 array (a = aaa, b = bbb, d = 6)
)

というような配列群が合って、その data1 の c と data2 の d を降順にソートして
最後に下のようにそのdata1とdata2を結合したdata3を作り出したいです。

array ("data3",
 array (a = aaa, b = bbb, c = 1)
 array (a = aaa, b = bbb, c = 2)
 array (a = aaa, b = bbb, c = 3)
 array (a = aaa, b = bbb, d = 4)
 array (a = aaa, b = bbb, d = 5)
 array (a = aaa, b = bbb, d = 6)
)

あまり基礎を分かっておりませんので、こんなこと自体ができるかどうかが不明ですが、よろしくお願いします。
0630nobodyさん2011/01/14(金) 17:53:59ID:???
prepareからリターンする前に落ちるって何度言えば分かるの?
0631nobodyさん2011/01/14(金) 17:58:27ID:???
よーし、こうなったら大穴当てちゃうぞ!

?がab'cdef

こうだろw
0632nobodyさん2011/01/14(金) 18:01:33ID:x5/cEkaG
>>627
>>628
3つのパターンを試しましたが全て結果は変わらずでした。

ただ、>>608さんのphp.iniの設定を間違っていました。
データベース接続成功とテスト出力Aの後に以下のエラーが出ています。


PHP Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
PHP Strict Standards: Non-static method MDB2::fileExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
Strict Standards: Non-static method MDB2::fileExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1854
PHP Strict Standards: Non-static method MDB2::loadClass() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1861
Strict Standards: Non-static method MDB2::loadClass() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 1861
PHP Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 327
Strict Standards: Non-static method MDB2::classExists() should not be called statically, assuming $this from incompatible context in /-省略-MDB2/MDB2.php on line 327
0633nobodyさん2011/01/14(金) 18:03:53ID:???
>>623
XREAでググるとMySQLのドライバを入れなくちゃならんという記述を見かけるが
その辺は大丈夫?
0634nobodyさん2011/01/14(金) 18:08:08ID:???
>>629
そのようになるようなクエリを書けば良いんじゃないの?
そのままやりたいならとりあえずarray_mergeでマージしてから
usortでC,Dの値を見る形で良いと思うが
0635nobodyさん2011/01/14(金) 18:09:17ID:z4LQsmVn
これはどちらの方が高速に動作しますか


$stmt->bindParam(':foo', $foo);
$stmt->bindParam(':bar', $bar);
foreach($arr as $value){
list($foo, $bar) = $value;
$stmt->execute();
$stmt->closeCursor();
}

///////////////////////////////////////

foreach($arr as $value){
$stmt->bindValue(':foo', $value['foo']);
$stmt->bindValue(':bar', $value['bar']);
$stmt->execute();
$stmt->closeCursor();
}
0636nobodyさん2011/01/14(金) 18:10:15ID:x5/cEkaG
>>633
自分で入れてはないのですが
get_included_files()で確認したら

/usr/local/lib/php/MDB2/Driver/mysql.php

を読み込んでいるようですし
queryメソッドでは結果を取得できるので
大丈夫だという認識でした。
0637nobodyさん2011/01/14(金) 18:15:30ID:N58y3KzQ
>>634
どのようにクエリを書けばいいか分からなかったので、いっそPHP側でできないものかと思いまして。
ちょっとその方法でやってみます。ありがとうございます。
0638nobodyさん2011/01/14(金) 18:20:14ID:???
>>632
これはどう?
$stms = $this->db->loadModule('Extended')->prepare($sql);
0639nobodyさん2011/01/14(金) 18:28:15ID:x5/cEkaG
>>638
Fatal error: Call to undefined method MDB2_Extended::prepare()

というエラーが出ます。
0640nobodyさん2011/01/14(金) 19:12:37ID:???
>>693
これは?
$stms = $this->db->prepare($sql, NULL, MDB2_PREPARE_RESULT);
0641nobodyさん2011/01/14(金) 19:23:25ID:x5/cEkaG
>>693
ありがとうございます。

693さんからレスを頂く前に動きました。

原因としては、XREAサーバーには既にMDB2がインストールされていたらしく
それを確認せずに自分でMDB2のパッケージをDLし、インストールしていました。

ソース上は自分でインストールした方を読み込んでいたらしく
そのパッケージを削除し、はじめからインストールされていたMDB2を
読み込みように変更したら正常に動きました。

ただ、なぜprepareだけ異常なのか、queryメソッド等は動くのかはわかりません。


朝早くからたくさんの方にレスを頂きました。
本当に助かりました。ありがとうございました。
0642nobodyさん2011/01/14(金) 19:28:56ID:???
prepareとqueryとではincludeするソースが異なるからじゃない?
まぁ解決してよかったね。
0643nobodyさん2011/01/14(金) 19:34:06ID:???
解決してよかったけど
既に定義されていたらincludeできないから
その結論で完全解決ではないと思うぞ
0644nobodyさん2011/01/14(金) 19:58:01ID:???
>>641 名前: nobodyさん 投稿日: 2011/01/14(金) 19:23:25 ID:x5/cEkaG

解決して良かったです。

このスレで以前にありましたが、思いがけない仕様で皆様が開眼した事例がありました。
今回もそれに類するのだろうか? と、いろいろと自分でも試してみたりしていました。

それにしても環境に起因する事項だったんですね。

今回は、>> 643 さんが言われている、
「自分でダウンロード&インストールした方を使用した」部分の確定に課題が残りますが、
少しでも前に進める状況が得られたことは良いことです。

さて、お手数ですが残る課題として、>>643 さんが言われている部分を再整理して、
再度の質問として出してもらえませんか?

> 既に定義されているから include できない

それが覆された状況ですから、その部分を検証してみる必要があると思います。
0645nobodyさん2011/01/14(金) 20:45:04ID:x5/cEkaG
>>589です。

>>642
>>643
>>644
本当にありがとうございました。
心から感謝します。

少し状況を整理すると
XREAサーバー側にMDB2が入っていないと勝手に判断した後に
自分でダウンロードしたパッケージを解凍し、そのままサーバーへアップロードしました。

今までこの方法で、PEAR::NetUserAgentMobile等が正常に動いたので
それで問題ないと思っていたのですが

今調べて、このあたりを読むとそれだけではダメなんですかね?
http://m630.net/php-mysql/xreapearmdb2.html

正常にインストールが完了していないMDB2を無理やり読み込んでいたのが
おかしな挙動の原因でしょうか。
0646nobodyさん2011/01/14(金) 20:48:19ID:???
ぐぐったらこんなページあったけど
http://d.hatena.ne.jp/me0/20080320
0647nobodyさん2011/01/15(土) 08:03:08ID:???
>>645

なるほど
書かれているURLも見ました
とても勉強になります
解決してなによりです
0648nobodyさん2011/01/15(土) 08:03:58ID:???
>>646
これまた勉強になります
0649nobodyさん2011/01/15(土) 09:32:51ID:???
しかしPEARをインストールしてあるなら運営がそこまでは設定するべきじゃないの
0650nobodyさん2011/01/15(土) 10:30:31ID:???
勉強になるのは結構だけどどうなのかちゃんと報告してくれよ あれだけ皆の世話になったんだから
0651nobodyさん2011/01/15(土) 11:09:54ID:???
PHPとしては当然の動作をしただけでたいした問題じゃない
言葉にするなら競合しただけ
0652nobodyさん2011/01/15(土) 11:43:34ID:???
何がどう競合したの?
■ このスレッドは過去ログ倉庫に格納されています