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

【PHP】下らねぇ質問はここに書き込みやがれ 51

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2007/07/27(金) 16:32:46ID:???
まず読め→【PHP マニュアル】http://www.php.net/manual/ja/
PHPで最良の教本はこの公式マニュアル。市販の書籍は嘘が多いので鵜呑みにしない。
過去スレ、関連スレ、FAQなどは>>2-10辺り

◆前スレ
【PHP】下らねぇ質問はここに書き込みやがれ 50
http://pc11.2ch.net/test/read.cgi/php/1184143801/

◆質問する時の注意
・ 自分のIDを表示させること。(メール欄に何も記述しないこと。空白も入力しちゃダメ)
・ サーバーのOS(Linux、Windows他)、WebサーバーとPHPの種類やバージョン等を明記すること。
・ 己の行った操作、変更などを詳しく明記すること。
・ エラーメッセージはそのまま表記すること。「エラーが出ます」だけでは回答不可。
・ 質問者として、態度をわきまえること。
・ 事前に公式マニュアル、リファレンス本くらいはちゃんと目を通しておくこと。

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

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

【その他諸注意】
・正規表現・PEAR・テンプレート(Smarty等)・フレームワークは各該当スレへ
・SQLについての質問はデータベース板(PCカテゴリ)の各スレで
0237nobodyさん2007/07/31(火) 16:37:50ID:yIMYAVOK
ありがとうございます。
>>236さんのやり方がコード編集も楽だったので使わせていただきました。
0238nobodyさん2007/07/31(火) 18:14:15ID:igpQYGKj
簡易アンケートを作りたいのですが、ログの保存がうまくいきません。
$_GETされた値を保存しています。

$vote = $_GET['vote'];
$log = 'count.txt';
if ($vote) {
  $lines = file($log);
  foreach ($lines as $line) {
    $line = explode('<>', $line);
    if ($line[0] == $vote) {
      $line[1] += 1;
    } else {
      $line[0] = $vote;
      $line[1] = 1;
    }
    $fp = fopen($log, 'w');
    fwrite($fp, $line[0].'<>'.$line[1]);
    fclose($fp);
  }
}

count.txtは、
PHP<>1
Java<>10
のようになっています。

入力チェックなどは省きますがこんな感じです。
このスクリプトを実際に動かすと、ログが最新の1つしか書き込まれないのですがどこが悪いのでしょうか?
それとやはりこの手のものはDBでやるべきでしょうか?
コメント書きたいのですが行数がギリギリなのでお許しを・・・汚いソースですみません。
0239nobodyさん2007/07/31(火) 18:19:40ID:???
>>238
$fp = fopen($log, 'a');
02402382007/07/31(火) 18:28:00ID:???
>>239
それだと思ったとおりの動作にはなりませんでした。
ただおかげで改行を入れ忘れてることに気づきました。ありがとうございます。

ちなみにそれでやった場合、
PHP<>1
Java<>10
から、
PHP<>1
Java<>10Java<>1のようになりました。

PHP<>1
Java<>11
という風になってほしいです。
0241nobodyさん2007/07/31(火) 18:51:17ID:???
>>240
スマソ。ちゃんとみてないでてきとうにいっちゃった。

foreach内にfwrite($fp, $line[0].'<>'.$line[1]);fclose($fp); があるのが原因。
wというのはあくまでも上書きだから
$lineで読み込んだ行を逐一fput or fwriteして追記していく。
0242nobodyさん2007/08/01(水) 00:33:03ID:???
>>238のコードでwをaに変えただけだと>>240のようにはならないで
PHP<>1
Java<>1Java<>10Java<>11
となるはずなんだけど・・・

$vote = $_GET['vote'];
$log = 'count.txt';
$exist = false;
if ($vote) {
$lines = file($log);
$fp = fopen($log, 'w');
foreach ($lines as $line) {
$line = explode('<>', $line);
if ($line[0] == $vote){
$line[1] ++;
$exist = true;
}
fput($fp, $line[0].'<>'.$line[1].'\n');
}
if (!$exist)
fput($fp,$vote.'<>1\n');
fclose($fp);
}
0243nobodyさん2007/08/01(水) 00:45:31ID:???
fputs
0244nobodyさん2007/08/01(水) 01:22:52ID:???
>>242
まずはファイル関数のマニュアル読むか、入門本買って超シンプルな所から作り始めなさい。
出来ないってことはまだ早いんです。
0245nobodyさん2007/08/01(水) 01:46:26ID:???
>>244
は?
0246nobodyさん2007/08/01(水) 01:58:38ID:CHA5n09T
xdebugは実運用では無効にした方がいいとのことですが
php.ini自体を変えるということですか?
0247nobodyさん2007/08/01(水) 02:02:33ID:???
>>245
は?そうだろ
0248nobodyさん2007/08/01(水) 02:11:44ID:???
>>242
空のcount.txt用意してそれ動かしてみたけどログがだいぶむちゃくちゃw
?vote=hogehogeとかうてばいいんだよな?
ファイル関数ってむずいね。普段DB使ってるからさっぱりだけど面白そうだな。
ちょっと後で作ってみるか。
0249nobodyさん2007/08/01(水) 02:18:32ID:???
たしかにファイル関数のほうが難しいっていうか、DB使ったほうが余計な事考えずにすむ。
0250nobodyさん2007/08/01(水) 02:23:54ID:???
流れ的に>>242は238とは別人じゃねーの?
>>244がハヤトチリしてややこしくしたって感じだな
0251nobodyさん2007/08/01(水) 03:09:16ID:???
どっちにしろ>>244みたいのは余計なお世話。
あんなこといったらこのスレの意味がない。
0252nobodyさん2007/08/01(水) 03:44:52ID:???
変数の中身の大きさ(バイト)を調べる関数ってあります?
DBから出したバイナリデータのサイズ測ろうとしたけど、それらしい関数が見つからなくて。
0253nobodyさん2007/08/01(水) 03:58:34ID:???
丸投げにそのまんま答えてやるより、先を考えたら>>244のほうが優しい気もするけどな。
別に答えてくれた人を批判しているわけではないが、質問者は工夫しなさ過ぎ。
0254nobodyさん2007/08/01(水) 04:20:08ID:???
>>244のいう超シンプルっていうのはまさにこういうもののことだと思うが。
これ以上シンプルにしろっていわれても逆に難しいぞ。
0255nobodyさん2007/08/01(水) 04:41:47ID:???
こたえたくないならスルーしてくれ。
回答側のおれからしてもめざわりだ
0256nobodyさん2007/08/01(水) 05:59:18ID:???
仕事でプログラミングをしている方は
どんな大学(学部)を出ているんですか?
また、どんな学部ならプラグラミングを学べますか?
どうか、回答よろしくお願いします。
0257nobodyさん2007/08/01(水) 06:26:22ID:???
PHP単体のベンチマークプログラムを書こうとしています。
abつかうとかじゃなくて。
それで、user time/system timeをPHPで測定する関数はありますか。
0258nobodyさん2007/08/01(水) 06:31:31ID:???
自己レス。
>>257
posix_timesというのがありました。
スレ汚しすまん。
0259nobodyさん2007/08/01(水) 06:33:55ID:???
学部では情報系とか工学系が多い。
CやPerlやJavaあたりは学習でよく使われるといわれる。
ただ実力社会だから学歴や学部はあまり関係ないよ。
会社はいってからやったりするとこもあるから。
逆にいえば会社入るまでプログラミングとは無縁なんて人もざら。
他にも文系の人が趣味でやってて本格的に始めたりね。
0260nobodyさん2007/08/01(水) 07:20:26ID:???
>>259
回答ありがとうございました。

今、某大学の附属校に通っていまして、
3年生の選択科目の希望を夏休み明けに
出さなければいけないんです。

それが学部選択にも影響するんですが、
情報・工学系といったら理工学部、
理工学部を選択する場合は、
私の大嫌いな化学が必修なんですよね。
それですごく悩んでいまして。
0261nobodyさん2007/08/01(水) 07:36:14ID:???
好きな学部選びなよ。授業で勉強する必要はなし。
情報科学部卒の知り合いが大学でやったプログラムの知識なんて役にたってないと。
会社はいってから研修で飛躍的に伸びたって。
興味あるなら、大学入ったらアルバイトでプログラマーになればいいよ。
PGは基本使い捨てで人数不足だから、会社さえ選ばなければ実は誰でもなれる。
MSやGoogleに就職したいというなら話は別だけど。
0262nobodyさん2007/08/01(水) 09:17:12ID:???
PHPにはextract()という大変ありがたい関数があるんですが、これの逆を行ってくれる関数はありませんか。
ローカル変数を配列として取得したいんです(イメージはpythonのlocals())。
get_defined_vars()だと環境変数も含めて取ってくるので、ちょっと希望とは違います。
0263nobodyさん2007/08/01(水) 09:58:56ID:???
ありません。
0264nobodyさん2007/08/01(水) 12:06:09ID:???
スレチごめん
>>260
基本的に、大学(情報系学部学科)はプログラミングを学ぶというより、プログラミング技術を使って研究をする機関だ。プログラミングを学びたいだけなら、専門学校の方が合っている。
0265nobodyさん2007/08/01(水) 12:18:19ID:???
>>262
function test() {
$a = "test";
$arr = get_defined_vars();
}
お望みのものが取れると思うが。
0266nobodyさん2007/08/01(水) 12:18:41ID:???
コンピュータエンジニアリングを学びたいなら大学行ったほうがいい。
単純にプログラマーとして働きたいだけなら、WEB系ならちょっと勉強すれば現場で充分やっていけるよ。
すげー簡単なので。
0267nobodyさん2007/08/01(水) 13:18:28ID:???
同意。
勉強したいなら大学行って、稼ぎたかったらキャリア詰む。
そういう単純な考えでいいと思うぜ。
0268nobodyさん2007/08/01(水) 13:38:58ID:???
文字列の取り出し方法を考えていますがうまくいきません
ソースを取り出して

$src="<p>Aの価格:2400円</p>";

という中から2400の部分を抜き出したいんですがpreg_replaceじゃダメみたいで困ってます
0269nobodyさん2007/08/01(水) 13:49:05ID:???
失敗したの書くの忘れてた

$price=preg_replace("/価格:(.*?)円/","$1",$src);
これだと$priceが「<p>Aの2400</p>」になってしまいます
どう書けば値段の部分だけ残るようになりますか
0270nobodyさん2007/08/01(水) 13:57:20ID:???
patternに"<p>Aの"と"</p>"が含まれてないんだから当たり前。
$price = preg_replace("/<p>Aの価格:(.*?)円<\/p>/","$1",$src);
0271nobodyさん2007/08/01(水) 13:58:13ID:???
ちなみに抽出したいだけならpreg_matchのほうをおすすめしておくよ。
0272nobodyさん2007/08/01(水) 14:27:53ID:???
とりあえず>>1嫁よな
0273nobodyさん2007/08/01(水) 14:59:23ID:i33a5O9E
文字化け関係の質問です。

mb_detect_encodingは信用できるのでしょうか?
sjisの文字をブラウザで表示させてみると、sjisで閲覧すると文字化けしています。
ブラウザのエンコードをutf8にすると、文字化けしないで表示されます。
そして、mb_detect_encodingで文字コードを調べると「sjis」と表示されます。

また、mb_convert_encodingでsjis⇒utf8にすると何で見ても文字化けします。(そりゃそうですが)

PHPはsjisでしているのですが、なぜ勝手にutf8になっているのでしょうか?
そして、なぜmb_detect_encodingではsjisと表示されるのでしょう。。。
02742042007/08/01(水) 15:01:15ID:v9Mvytgm
すみません、204でアップローダーについて質問したものです

//$i =アップされるファイルの数(フォームの参照窓の数)
for($i=0;$i<sizeof($_FILES['fl']['name']);$i++){
 move_uploaded_file($_FILES['fl']['tmp_name'][$i],"./doc/".rename($_FILES['fl']['tmp_name'][$i],"./doc/test_".$i.".jpg"));
}

というプログラムでファイルのアップロードとリネームには成功したんですが、
上書きが出来ていません。
なぜでしょう? どなたかアドバイスおねがいします
0275nobodyさん2007/08/01(水) 15:27:43ID:3aU7WUlJ
クラス内でusortを使う場合は

usort ($a, "cmp");
usort ($a, $this->cmp);

どちらなのでしょう?
どっちも動かないので、書式がわからず直しようが…
0276nobodyさん2007/08/01(水) 15:49:40ID:???
>>260
大学へ入ってプログラムが役に立つ将来性のある研究とかしたほうがいい。
プログラムだけ出来る人なんてある程度の年になったら使い物にならないからポイ捨て。
長い目で食っていける道を探したほうがいいよ。
大学できちんと研究して大きめの企業入るとかね。
0277nobodyさん2007/08/01(水) 15:55:11ID:???
>>273
正直信用は出来ません。

でもsjisソースで表示させるなら、なにもしなくても日本語はsjisで読めるはずだけど?
ブラウザ側の文字コード指定とか確認したほうがいいんじゃない?
それともソースが実はUTF-8だとか・・。

ソースを最小限にして晒してみそ。
0278nobodyさん2007/08/01(水) 16:11:25ID:i33a5O9E
>>277
ソースごちゃごちゃしすぎてどこ晒せばいいのかわかんないですorz

とりあえず、mb_detect_encodingでsjisと表示されますが、実際は中身がutf8です。
mb_detect_order("Shift_JIS,ASCII,EUC-JP,UTF-8");
と指定してますが、あくまでも優先順位ですよね?
0279nobodyさん2007/08/01(水) 16:21:43ID:???
>>278
その実際は中身はUTF-8ってどういうこと?
ソースはsjisなんでしょ?
外部から来たデータって事?
02802752007/08/01(水) 16:59:24ID:3aU7WUlJ
function cmp_desc($a, $b) //メソッド
{
if($a["num"] > $b["num"]){
return -1;
}else if($a["num"] < $b["num"]){
return 1;
}else{
return 0;
}
}

usort($FRUIT, "cmp_desc");
usort($FRUIT, "$this->cmp_desc");
usort($FRUIT, $this->cmp_desc);

Warning: usort() [function.usort]: Invalid comparison function.
うーん
0281nobodyさん2007/08/01(水) 17:02:04ID:???
>>275
メソッドを使う場合は
usort($a,array(__CLASS__,'cmp')); // 内部から
usort($a,array('ClassName','cmp')); // 外部から
0282nobodyさん2007/08/01(水) 17:31:36ID:3aU7WUlJ
>>281
なんと。
ありがとうございます。やってみます。
0283nobodyさん2007/08/01(水) 17:53:14ID:???
evalに、PHPのコードだけでなく、ファイル名や行番号も渡すことはできますか。
evalしてエラーがあったときに、それがどのファイルの何行目に相当するかがわかるようにしたいです。

$code = file_get_contents('example.php');
// $codeをゴニョゴニョ
eval($code); // エラーがあってもファイル名が表示されない

0284nobodyさん2007/08/01(水) 17:58:52ID:???
>>283
>>1
02852832007/08/01(水) 18:28:06ID:zKnkF07q
283のつづきです。
例えば
$s = 'x = 10;';
eval($s);
とすると
Parse error: syntax error, unexpected '=' in /tmp/hoge.php(10) : eval()'d code on line 1
と出るわけですが、ファイル名として eva()'d code というのが使われています。
これだと、複数のファイルを扱っているときにどのファイルでエラーになったのか分からず困っています。
どなたかお助けを。
PHPは5.2.0です。
0286nobodyさん2007/08/01(水) 19:09:39ID:???
>>283
eval()は元々文字列用だし…ファイルごとやるならrequireは使わないの?
02872832007/08/01(水) 19:13:40ID:???
>>286
ファイルの内容そのままではなく、読み込んで手を加えた上で実行しようとしています。
一時ファイルに書き出すしかないんでしょうか。でもそれだと元とは違うファイル名になるし。
0288nobodyさん2007/08/01(水) 19:37:04ID:???
>>273,278
多分、Apacheのhttpd.confや.htaccessで「AddDefaultCharset UTF-8」
なんてやってませんか。そうするとHTTPレスポンスヘッダに
Content-type: text/html; charset=UTF-8
が入っていたりして、ブラウザはUTF-8と認識します。

<meta http-equiv="Content-Type"…を指定するか、
PHPコード内でHTML出力前に、
header('Content-type: text/html; charset=Shift_JIS');
するといいんじゃないですか。
PHPのソースコードのエンコーディングがどうとかはあまり関係ないです。

>>4の一番上も読みましょう。
0289nobodyさん2007/08/01(水) 21:23:29ID:???
>>288
でもそれだとSJISで日本語は読めないんじゃ・・
0290nobodyさん2007/08/01(水) 21:30:11ID:???
>>264, >>2666-267, >>276
回答ありがとうございました。
プログラミングを学ぶのでなく、
プログラミングを使った研究をするということで、
なるほどと思いました。
質問してよかったです。
ありがとうございました。
02912882007/08/01(水) 21:34:44ID:???
>>289
「PHPソースコードはSJISで書いているが、
ブラウザで見るとUTF-8と認識され文字化けしている」
質問だと思ったけど改めて見てみたら、

>>273
> PHPはsjisでしているのですが、なぜ勝手にutf8になっているのでしょうか?
>>278
> とりあえず、mb_detect_encodingでsjisと表示されますが、実際は中身がutf8です。

どっちだかわかんねーや。
0292nobodyさん2007/08/01(水) 22:07:33ID:???
mb_detect_encoding
なんか使うのがバカ。意味なしだろ
0293nobodyさん2007/08/01(水) 22:43:00ID:???
プログラミング時に使うために
二つのクラスのメソッドの有無を表示するスクリプトを書いていますが、
get_class_methodsだとpublicなメソッドしか取得できません
外からprivateあるいはprotectedなメソッドを取得する方法ってありませんか?
それ用にクラスを書き換えるのは嫌なんですよね
0294nobodyさん2007/08/01(水) 22:48:23ID:???
なんのためのprivate、protectedなのか
0295nobodyさん2007/08/01(水) 22:52:00ID:???
うーん確かに。
やっぱりないですよね
0296nobodyさん2007/08/01(水) 23:04:06ID:???
>>293
ReflectionClassクラスのgetMethodsメソッドで出来る。
0297nobodyさん2007/08/01(水) 23:09:06ID:???
中のスコープからget_class_methods($this)するか
Reflectionかな
0298nobodyさん2007/08/01(水) 23:11:18ID:???
>>295
こんなんダメ?

class Test {
public function get_methods() {
return get_class_methods($this);
}
}

$test = new Test;
print_r($test->get_methods());
0299nobodyさん2007/08/01(水) 23:25:54ID:???
>>296-297
ありがとうございます
ReflectionClassで出来ました
>>298
調査対象クラスは調べられてることすら知らない感じにしたいんですよ
0300nobodyさん2007/08/02(木) 02:03:28ID:???
このスレが必要なくなる日はくるのだろうか。

Google先生は不要?――ソースコード共有サイト「code*」開設
http://www.atmarkit.co.jp/news/200708/01/code.html

コードなにがし
http://code.nanigac.com/
0301nobodyさん2007/08/02(木) 02:11:14ID:???
こいつは面白いな
かなり人集まるだろ
0302nobodyさん2007/08/02(木) 02:22:05ID:???
こういうサイトは他にもあるが、殆どユーザーいないという(笑)
0303nobodyさん2007/08/02(木) 02:34:33ID:???
ニコニコもそうだけど、やっぱ知名度って重要だな
0304nobodyさん2007/08/02(木) 02:38:37ID:???
mixiのコミュニティと何が違うのかと
0305nobodyさん2007/08/02(木) 04:07:51ID:???
>>300
なんというか、質問のレベルが低すぎて苦笑してしまった(答えてる側もね)
0306nobodyさん2007/08/02(木) 04:40:21ID:???
世の中には色んなレベルの色んな人がいる事を知ったほうがいい
0307nobodyさん2007/08/02(木) 05:42:34ID:???
>>265
本当だ。。。関数つくってその中で呼べばいいのか。
遅れましたが、ありがとうございました。
0308nobodyさん2007/08/02(木) 05:48:04ID:???
>>307
ローカル変数の意味が分かってないんじゃ…
0309nobodyさん2007/08/02(木) 06:37:28ID:???
おれ、このレスの住民にすげー怒り覚えるわ。
人が真剣に質問してんのに、冷やかしのレスばっか。
貴重な時間無駄にしたわ。ほんと、バカばっか。
真面目な人の迷惑になるから、このスレさっさと消してくれる。
0310nobodyさん2007/08/02(木) 06:42:32ID:???
>おれ、このレスの住民にすげー怒り覚えるわ。
(^0^)
0311nobodyさん2007/08/02(木) 09:29:45ID:???
『底辺の奴らは黙って見てろ』って空気が漂っている
が、優しく答えてくれる人がいることを忘れてはならな
0312nobodyさん2007/08/02(木) 10:33:35ID:w1XcfUw5
フォーム入力などで
<input type="hidden" name="f01_address_pf" value="<? echo htmlspecialchars( $f01_address_pf, ENT_QUOTES, DEF_HTTP_ENC ); ?>">
<? echo htmlspecialchars( $f01_address_pf, ENT_QUOTES, DEF_HTTP_ENC ); ?>

と全部の表示・inputにやっていたのですが

ヘッダー当たりで、foreach($_REQUEST... 最初にhtmlspecialcharsしたら
後で問題が起きる可能性はあるのでしょうか?

なるべく元データは弄らないようにしたほうがいいのだろうか?と思いました。

0313nobodyさん2007/08/02(木) 11:24:27ID:???
>>312
ケースバイケース
0314nobodyさん2007/08/02(木) 11:28:43ID:w1XcfUw5
if($_REQUEST['action'] == "send")
{
foreach($_REQUEST as $key => $value)
{
$_REQUEST[$key] = strtr( $value, array_flip( get_html_translation_table( HTML_SPECIALCHARS ) )); //元に戻す
}
}else{
foreach($_REQUEST as $key => $value)
{
$_REQUEST[$key] = mb_strimwidth( $value, 0, 500, "",DEF_HTTP_ENC ); //500文字以下切捨て
$_REQUEST[$key] = htmlspecialchars($value, ENT_QUOTES, DEF_HTTP_ENC ); //エスケープ
}
}
メールの時は、確認ページまではエスケープ。送信時には戻す
エスケープしたまま本文中に&???;なんてあったら不自然ですよね…
0315nobodyさん2007/08/02(木) 11:35:51ID:???
>>309
オンブにダッコされるのを待っている時間が貴重というなら
なぜ自分で解決しようと考えない?
2chの使い方まちがってるよ
しらないものは仕方ないが努力はしろ
てめーがどれだけ焦ってるかなんてレスするやつらは知らんし
ろくな答えが無くて怒るのは見当違いだ
0316nobodyさん2007/08/02(木) 12:01:11ID:???
error_reporting(E_ALL)してると、いつもいつも
$var = array_key_exists('key', $array) ? $array['key'] : null;
としなきゃいけないことに疲れました。
標準でこんな関数ありませんか。
function get_item($key, &$array) {
return array_key_exists($key, $array) ? $array[$key] : null;
}
PHPはたくさん関数があるけど、本当に欲しいものは抜けてる気がする。

0317nobodyさん2007/08/02(木) 12:09:37ID:???
>>315
だから、努力しても見つからないから、ここで聞いてるんだが。
努力なら人一倍している。20歳で入った今の会社で24歳の最年少で課長になったからな。
5人の大卒の部下を鼻で使っているよ。
まぁ、30歳になったら社長になる勢いだけどな。
あまり、俺を知らないくせに生意気な口聞くないよ。
俺の会社に来たら、たっぶりしごいてやるからな。
0318nobodyさん2007/08/02(木) 12:13:57ID:???
>>316
$_POSTとかでは isset( )よく使うけどそれ以外で困ったことないな
0319nobodyさん2007/08/02(木) 12:25:15ID:???
phpをyumコマンドでインストする場合、入れたいモジュールとかって
どういう風に入れればいいのでしょう?
引数で指定できましたっけ?
0320七氏2007/08/02(木) 13:50:10ID:???
正規表現で置換したいんです。
date型の1991-02-31を
$birth='1999-02-22';
$born="a";
$born=ereg_replace("(....)-([0-9][0-9])-(..$)","\\1年\\2月\\3日",$birth);

print($born);
とプログラムして実行すると最後だけが1991年02月\3日となります。
[0-9]{2}等してみてもうまくいきませんでした。

ご指導お願いします。
0321nobodyさん2007/08/02(木) 13:51:00ID:n8RElLWH
MySQLを使ってDBにINSERT処理しようとしているのですが、
PRIMARYキーを設定してありまして、同じキーがあるかどうかは、
DBに検索してみないと分かりません。

そのため、DBエラーを回避するため、一回検索を掛けて同じキーがあればUPDATE
無ければINSERT処理をしていたのですが、偶然INSERT IGNORE とREPLACE INTOという便利な関数を見つけました。

INSERT IGNOREとREPLACE INTOは全く同じ動作をするのですが、
全く同じものだということでしょうか?

また、通常このような処理の場合にはどういう風に処理するべきでしょうか?
上記のような処理で問題はないでしょうか?
宜しくお願いします。
0322nobodyさん2007/08/02(木) 14:00:31ID:???
>>321
スレタイくらい読んだら?
0323nobodyさん2007/08/02(木) 14:06:26ID:n8RElLWH
>>322
すみません、環境を書き忘れていました。
OSはWindows XP SP2
MySQL5.1.12-beta
PHP5
です、宜しくお願いします。
0324nobodyさん2007/08/02(木) 14:11:43ID:???
>>323
ここはPHPのスレです。
MySQLに関する質問は専用のスレでお願いします。
0325nobodyさん2007/08/02(木) 14:16:52ID:tBx5FvgN
MySQLの質問になりますがお願いします。

SELECT subject FROM diary WHERE
id = ANY (SELECT appli FROM my_friend WHERE appro='[ID]' AND flg='0') OR
id = ANY (SELECT appro FROM my_friend WHERE appli='[ID]' AND flg='0') ORDER BY date DESC LIMIT 5

で、appro=ID、appli=IDであるappliとapproの日記を5件取得しています。

これに、他のテーブルを結合させて、そのテーブルからも情報を取得したいのですが、

SELECT subject FROM diary INNER JOIN my_profile ON id = id WHERE
id = ANY (SELECT appli FROM my_friend WHERE appro='[ID]' AND flg='0') OR
id = ANY (SELECT appro FROM my_friend WHERE appli='[ID]' AND flg='0') ORDER BY date DESC LIMIT 5

とすると、Column 'id' in IN/ALL/ANY subquery is ambiguousのようにサブクエリが使えなくなってしまいます。
サブクエリと内部結合を同時に使う方法はないのでしょうか?
0326nobodyさん2007/08/02(木) 14:17:33ID:???
>>325
スレタイくらい読んだら?
0327nobodyさん2007/08/02(木) 14:18:37ID:xtj1bcv0
正規表現で置換したいんです。

$birth='1999-02-22';
$born="a";
$born=ereg_replace("(....)-([0-9][0-9])-(..$)","\\1年\\2月\\3日",$birth);

print($born);
とプログラムして実行すると最後だけがマッチしなくて1991年02月\3日となります。
[0-9]{2}、[0-9][0-9]等してみてもうまくいきませんでした。

ご指導お願いします。
0328nobodyさん2007/08/02(木) 14:22:00ID:tBx5FvgN
>>326
以前、ここでMySQLの質問はどこですればいいと尋ねたところ、
ここでもDBを取り扱うので構わないと言われたのでコチラに投稿しました。
0329nobodyさん2007/08/02(木) 14:22:27ID:???
>>327
荒らしですか?
0330nobodyさん2007/08/02(木) 14:24:42ID:tBx5FvgN
>>327
$birth = preg_replace('/([0-9]{4})\-([0-9]{1,2})\-([0-9]{1,2})/', '\1年\2月\3日', $birth);
0331nobodyさん2007/08/02(木) 14:26:14ID:???
>>328
MySQLのスレで質問しないのは何故ですか?
0332nobodyさん2007/08/02(木) 14:30:44ID:tBx5FvgN
>>331
>>328
0333nobodyさん2007/08/02(木) 14:32:32ID:???
>>328
MySQL 総合 Part11
http://pc11.2ch.net/test/read.cgi/db/1178154390/
0334nobodyさん2007/08/02(木) 14:50:34ID:???
プッ...
人一倍努力家で30才で一社を従える社長
そんな奴が仕事で躓いたあげく2chに必死で神頼み
なんかわらえる
0335nobodyさん2007/08/02(木) 15:05:01ID:???
>>334
そっとしといてやれよ。夏なんだからさ・・・
0336nobodyさん2007/08/02(木) 15:20:33ID:???
CGIとPHPの違いってなんですか?

CGIを調べると以下のように記述されていましたが
これだとサーバーサイドなプログラミング言語はすべてCGIに含まれませんか?

CGIとは、Common Gateway Interface の略で、WWWサーバの中で外部プログラムを実行するための仕組みをいいます。
インターネット文化がそうであるように、CGIもUNIXの中から生まれ発展してきました。
■ このスレッドは過去ログ倉庫に格納されています