トップページ⇒php
986コメント361KB

【PHP】質問スレッドpart27【php】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん05/03/03 22:41:23ID:???
・PHP全般の質問スレです。
・新規質問の方は上げてください。age進行でお願いします。
・質問する際には環境も明記。
・正しい日本語で分かりやすく。
・レスがつかないからって逆切れする厨お断り。
・解決しなくてもこたえてもらったら礼を。
■本家
 http://www.php.net/
■日本 PHP ユーザ会
 http://www.php.gr.jp/
■PHP マニュアル
 http://www.php.net/manual/ja/
■PEAR マニュアル
 http://pear.php.net/manual/ja/
過去スレ, 関連スレ等>>2-10辺り
0516nobodyさん2005/04/06(水) 15:51:09ID:???
空白(半角スペース)を に変更する関数はありますか?
addslashesみたいなのキボン
05175162005/04/06(水) 15:52:37ID:???
もう一回
空白(半角スペース)を&nbspに変更する関数はありますか?
0518nobodyさん2005/04/06(水) 16:27:24ID:???
つstr_replace
0519nobodyさん2005/04/06(水) 16:32:27ID:???
>>514
どうもです。
それをしてもこうなるんですよね。
バージョンの問題か、OSの問題か、php.iniあたりかということですね。

array(1) {
[0]=>
array(4) {
["tag"]=>
string(9) "MOJIRETSU"
["type"]=>
string(8) "complete"
["level"]=>
int(1)
["value"]=>
string(9) "mojiretsu"
}
}
0520nobodyさん2005/04/06(水) 17:23:20ID:???
>>519
Linuxでも試してみたけど、

-PHP4.3.10(Linux)/EXPAT 1.95.6
-PHP4.3.10(Linux)/EXPAT 1.95.7
-PHP4.3.11(Windows)/EXPAT 1.95.6
-PHP5.0.4(Windows)/libxml2 2.6.11

全部結果は同様にちゃんと出てる。
0521nobodyさん2005/04/06(水) 17:31:41ID:???
>>519
つーか、changelogみたら、PHP5.0.3の
Bug#31139 "XML Parser Functions" seem to drop & when parsing
http://bugs.php.net/bug.php?id=31139
そのものじゃないのか?
0522nobodyさん2005/04/06(水) 17:38:27ID:???
>>519
やっぱ>>521だわ。
-PHP5.0.3(Windows)/libxml2 2.6.11で再現確認。
-PHP5.0.2(Windows)/libxml2 2.6.11では問題なし。
0523nobodyさん2005/04/06(水) 17:44:55ID:???
<form action="***"method="post>
選択名<BR>
<select name="数字">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>
1を選択した時に1が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。
0524nobodyさん2005/04/06(水) 17:45:23ID:???
<form action="***"method="post>
選択名<BR>
<select name="数字">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>
1を選択した時に1が表示出来るようにしたいのですが、***のスクリプトが
わかりません。どなたか教えて下さい。
0525nobodyさん2005/04/06(水) 17:59:54ID:???
>>524
---------------------------------
<form action="test.php"method="post>
選択名<BR>
<select name="num">
    ・
    ・
    ・
---------------------------------
[test.php]

<?php
echo $_POST['num'];
?>
---------------------------------

0526nobodyさん2005/04/06(水) 18:02:48ID:???
>>525
それだけで1.2.3表示できるようになるんですか?
有難うございます。早速試してみます。
0527nobodyさん2005/04/06(水) 18:22:48ID:???
javadocやdoxygenみたいにソースからドキュメント起こせるツールってある?
0528nobodyさん2005/04/06(水) 19:06:28ID:???
>>527
PHPDocumentor
0529nobodyさん2005/04/06(水) 19:21:44ID:???
>>525
質問の仕方が間違っていました。

<form action=www.test.com/test.php method="post">
選択名<BR>
<select name="num">
<option value="1">1
<option value="2">2
<option value="3">3
</select><BR>
<input type="submit" value="OK">
</form>


test.php

<?php
if ( $_POST["num"] == "1" ) {
header("LOCATION:http://www.test.com/ 1.html");
}elseif ( $_POST["num"] == "2" ) {
header("LOCATION:http://www .test.com/2.html");
}elseif ( $_POST["num"] == "3" ) {
header("LOCATION:http://www.test.com/ 3.html");
}else {
header("LOCATION: form.html");
}
?>

あっていますか?


0530nobodyさん2005/04/06(水) 20:30:31ID:???
(´-`).。oO(あってるかどうか試してから書き込めよ)
0531nobodyさん2005/04/06(水) 20:52:36ID:???
>529
間違っています
どこかのブラウザでどこかの鯖なら間違って動く事もあるかもしれないが。
ってかそれだけの事だけだったらJS使えば?
0532nobodyさん2005/04/06(水) 21:15:05ID:???
>>520-522
ありがとうございます。ピンポイントでバギー版にあたっちゃったんですね。
0533nobodyさん2005/04/07(木) 00:22:36ID:???
お世話になります。
htmlのformで注文情報をpostして値をチェック
入力不適切なところがあれば前のページへ戻すのですが、
そのときに値が消えてしまいます。
どうすればよろしいのでしょうか。
0534nobodyさん2005/04/07(木) 00:35:58ID:???
>>533
> 前のページへ戻す
の所を、適切入力の項目を初期値として設定したものを表示する。
0535nobodyさん2005/04/07(木) 00:48:26ID:???
お世話になります。
了解しました。
0536nobodyさん2005/04/07(木) 00:48:40ID:???
>>533
<input type="text" name="hoge" value="$_REQUEST['hoge']">
0537nobodyさん2005/04/07(木) 01:27:11ID:???
>>536
おいおい。クロスサイトスクリプティングってしってるか?
0538nobodyさん2005/04/07(木) 01:34:41ID:???
>>537
エスケープしなきゃら無いのは同じだけど、
>>536の場合XSSとは別問題だなw
0539nobodyさん2005/04/07(木) 08:02:27ID:???
hogeが "><script... とか?
0540nobodyさん2005/04/07(木) 08:17:27ID:???
$_REQUEST['hoge'] = htmlspecialchars($_REQUEST['hoge']);
ぐらいしてるだろ。
0541nobodyさん2005/04/07(木) 09:18:19ID:???
世の中、悪さをする奴が悪いのか、それとも悪さをされる奴が悪いのか(--;
0542nobodyさん2005/04/07(木) 09:35:15ID:???
>>541
そりゃ悪さする奴が悪いが、悪さされたことにより
それが誰かに被害を与えれば、被害を与えた奴が(も)悪い。

ある程度同情はするが免責はせんよ、自分が被害者なら。
0543nobodyさん2005/04/07(木) 15:07:02ID:???
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING
in filename on line 537

というエラーでチュンとも鳴かないスクリプトに困っています。

該当行は、
if(!isset($_POST['datalist'])) { // <----- ココ
return;
}

で、何が悪いのか判りません。
$_POST['datalist'] を、$_POST[datalist] にすると、とりあえずその行でのエラーは消えますが
また次に出てくる配列の部分でエラーになり、配列キーの ' ' を全部消すと、
今度はファイルの最終行で「$が余計です」というエラーになります;;

" " でくくった配列は一つもありません。環境は、PHP4.3.9+Apache2.0 です。
何か思いつく方おられましたら教えてください。よろしくお願いいたします。
0544nobodyさん2005/04/07(木) 16:07:19ID:???
全角スペースでもはいってんじゃね?
0545nobodyさん2005/04/07(木) 16:07:57ID:???
>>543
鳴かぬならぶち殺してしまえ、そのスクリプト。

APCとかZendのプリコンパイラとか最適化ツール使ってない?

0546nobodyさん2005/04/07(木) 16:13:32ID:???
>>543
if文の前に問題があるんだと思うぞ。
なんか閉じ忘れてるとか、セミコロン無いとか…
0547nobodyさん2005/04/07(木) 16:44:56ID:???
show_source()で表示色に注目しながら探していくか、
次のようなスクリプトでT_ENCAPSED_AND_WHITESPACE部分を抽出してみるとか。

$source = file_get_contents("test2.php");
$tokens = token_get_all($source);
foreach($tokens as $token){
 if(is_string($token)){
//  echo $token."<br>\n";
 }else{
  list($id,$text) = $token;
  print $text."<br>\n";
  if($id == T_ENCAPSED_AND_WHITESPACE){
   print "[this line]".$text."[/this line]<br>\n";
  }
 }
}
0548nobodyさん2005/04/07(木) 17:36:31ID:???
http://php.s3.to/bbs/bbs5.php
↑これですが、Sn Uploaderのように、
下部にディスク使用量を表示させるにはどうすればよいでしょうか?
0549nobodyさん2005/04/07(木) 17:40:20ID:???
>>584
下部にSn Uploaderのようにディスク使用量を表示するスクリプトを追加する
0550nobodyさん2005/04/07(木) 17:53:40ID:???
>>548
echo 'ディスク使用量'.exec('du img').'バイト';
0551nobodyさん2005/04/07(木) 18:35:54ID:???
>>550の記述を追加してみましたが、できませんでした
0552nobodyさん2005/04/07(木) 18:39:21ID:???
>>550
しかし *NIX 依存
0553nobodyさん2005/04/07(木) 18:43:53ID:???
543です。 どうもありがとうございました。

547さんに教えていただいた方法を元に虫潰しにかかりましたが、
今度は別の行でひっかかって動きません;; 想像を絶する見落としなんですかねぇ・・・
問題ないように見えるし、元は4.0.2でちゃんと動いていたものなのですが・・・・・ プンスカ

>545  業者納入なので判りませんが、フツーにしか入れてないと思います

早くしないと旧機が持っていかれてしまう;;  焦りまくりッス 
愚痴スマンです。 ありがとうございました。
0554nobodyさん2005/04/07(木) 19:38:04ID:vs0utpq/
晒しなさい。
0555nobodyさん2005/04/07(木) 21:15:40ID:???
>>553
無償なんで普通に入れてたりしますが。
# まあ運用上は有益だけど問題が出るケースもあるから、
# 依頼されなけりゃ入れないが正解だが。

phpinfo()で入ってるか簡単に判るので念のため確認しとき。
何にせよ自分が使ってる環境を本人が認識できてないなんて、良くないことなんだから。
PHP4.3.9ならPHP Accelerator(PHPA)か、Zend Optimizerのどっちか。APCはない
0556nobodyさん2005/04/07(木) 23:41:29ID:???
ログファイルに書き込むときに、
設定した行数を超えたら最初の行を消すようにしたいのですが、
全部書き換える以外にいい方法はありますか?
0557nobodyさん2005/04/08(金) 00:17:56ID:???
>>556
シーケンシャルな仕組みを使う以上、ない。
0558nobodyさん2005/04/08(金) 00:19:57ID:???
だよね、どうもありがとう
0559nobodyさん2005/04/08(金) 01:21:41ID:???
おいおまいら!
スクリプトはシフトジスで書いていますか?
もれはいままでEUCだったけど、なんかスクリプト書くの
ウィンドウズだしシフトジスでいいかなぁなんて思えてきた。
0560nobodyさん2005/04/08(金) 01:40:53ID:???
>>559
-enable-zend-multibyte
なら、お好きにどうぞ。
0561nobodyさん2005/04/08(金) 01:51:02ID:???
>>559さんどうもでつ
mbstring.internal_encodingがeucでhtmlのencodingがシフトジス
でphpの記述がシフトジスで問題ないですか?
0562nobodyさん2005/04/08(金) 01:55:51ID:???
Shift_JISで書く意味なくね?俺はEUCでずっと書いてる
0563nobodyさん2005/04/08(金) 02:03:09ID:???
mvcになってねぇ
デザがシフトジスでhtlm作るんだよ。
そーするとスクリプトとhtmlですげー厄介
HTML_QuickFormではスクリプト内でformのアトリビュートとか
設定するでしょう、
0564nobodyさん2005/04/08(金) 02:06:51ID:???
>>563
どちらにせよデザの持ち込むhtmlは、文字エンコードも
改行コードも信用ならんので、間に一括変換噛ますでしょ?
0565nobodyさん2005/04/08(金) 02:12:39ID:???
改行コードはあんまり気にしてないっす。
でもさぁ EUCにするメリットはあるのか?
いままで鯖のロケールがEUCだったので合わせてたけどね。
クライアントからscpでアクセスしてウィンドウズから
ソース見るしね。
気になるのがDBへのインサートかな。おもにMYSQL使ってんだけど
mysqlの文字コードはどーなってのか心配・・・・
0566nobodyさん2005/04/08(金) 02:27:39ID:???
WEB関係はUTF8に統一した。
0567nobodyさん2005/04/08(金) 02:30:41ID:???
好きなの使えば良いさ
0568nobodyさん2005/04/08(金) 02:36:36ID:???
>>566
裏山椎茸
漏れも速くUTF8に移行したい。
スクリプトはEUCに統一してたんだが、
OSがUTF8な物が増えてきた。
0569nobodyさん2005/04/08(金) 04:17:13ID:???
utf-8にした場合、phpmyadminで文字化けしない?
0570nobodyさん2005/04/08(金) 04:33:19ID:???
         ,. ─- 、,,.___
        ,イ〃          `ヽ,__
.     N. {'             \
.    N. {               ヽ
.    N.ヽ`               〉
    N.ヽ`        ,.ィイ从       /
.    ヾミ.___-‐=彡'ノノノ__,ゞミ=-_rく
      lrf´ゞ"モ=ヾーf =モチ<}rv^i !
      ヾト、` ̄,り「弋!  ̄´ノ ソ
         !  ̄  ii{_,.   ̄  /r'´
.       ┌────────────‐┐
       .|                   .|
   ,. -‐ '|                   .|
  / :::::::::::|  >>569              .|__
  / :::::::::::::|  おまいはとんでもない    rニ-─`、
. / : :::::::::::::|  考え違いをしているようだ `┬─‐ .j
〈:::::::::,-─┴-、                  |二ニ イ
. | ::/ .-─┬⊃                     |`iー"|
.レ ヘ.  .ニニ|_____________.|rー''"|
〈 :::::\_ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::: |:::::::: /::::::::::::|
0571nobodyさん2005/04/08(金) 07:24:59ID:???
>>565
SJISの場合は、PHP処理の内部で変換が何度も掛かるので効率が悪い。
(Zend Engineがそのまま扱えないため)
EUC-JP/UTF-8はそれがない。ケータイ向けであっても全部SJISで扱わずに、
最終的な出力でSJISにしてやるのが良い。

という理由はあるが、--enable-zend-multibyteして適正に
mbstring関係設定して使うのなら、別に構わんと思うよ。
判ってて使ってるんだから。理解しないで文字化けがとかが一番ウザイ。
0572nobodyさん2005/04/08(金) 09:42:26ID:???
>>565
MySQLのバージョンなんぼからだったかは忘れたけど、SJIS対応してるから
SJISに設定すれば問題なく使えるよ。もちろん全く問題なしというわけではないが、
携帯向けの開発中心にやってる俺からすれば、デメリットよりもメリットの方がかなりデカイ。
0573nobodyさん2005/04/08(金) 11:54:02ID:KGAjK1pc
register_globals=on の状態なんですが
フォームの適当な箇所でEnterを押すと
複数あるsubmitボタンの表示が一番上の値が取得されてしまうのですが
これを下のsubmitボタンの値を取るように、又は値を取らないようにするには
どうしたらよいのでしょうか?
0574nobodyさん2005/04/08(金) 11:59:28ID:???
>>573
ブラウザの仕様だからPHP側ではにゃんとも
0575nobodyさん2005/04/08(金) 14:38:39ID:???
>>573
<input type="submit" />じゃなくて<input type="button" />にしてやれば
Enterを押しても送信されない・・・と思う。
0576nobodyさん2005/04/08(金) 17:38:23ID:???
ビルダーでPHPスクリプト作れますか?
0577nobodyさん2005/04/08(金) 18:18:08ID:???
>>576
マッチョビルダーじゃ作れない
0578nobodyさん2005/04/08(金) 18:19:52ID:???
>>577
どうやって作ればいいのですか?
0579nobodyさん2005/04/08(金) 18:27:44ID:???
外部JavascriptをPHPで吐くようにしたんですが、
FirefoxやOperaでは問題ないのにWin-IEでは実行されません(画面真っ白)。
スクリプトの内容は単なるdocument.writeの羅列です。

同じ内容のJavascriptを普通のjsファイルに書いて読み込めば実行されるのですが・・・
また、そのPHPファイルを直接IEから呼び出すとちゃんとダウンロードされます。

何かIE特有の注意点等ありますでしょうか?
0580nobodyさん2005/04/08(金) 18:53:23ID:???
>>576
マルチ
>>579
JavaScriptはよく知らないからアレだけど
HTMLのscriptタグ内にtype=text/javascript入れるとか
phpでheader()でContentーtype:text/javascript入れるとか
05815792005/04/08(金) 18:58:51ID:???
>>580
どうもです。
一応そこらへんはやってるはずです。
phpのheaderではContent-type: application/x-javascriptを吐いてます。
Contentーtype:text/javascriptもやってみましたが同じでした(´・ω・`)
0582nobodyさん2005/04/08(金) 19:06:02ID:???
PHPやめて.jsにしたら読める?まずPHPの問題かJavaScriptの問題かはっきりさせよう
05835792005/04/08(金) 19:26:42ID:???
>>582
jsファイルにするとうまく行きます。
また、IEでJavascriptのエラーは出てないようです。
05845792005/04/08(金) 19:39:11ID:???
問題を単純化するため、以下のようなソースでテストしましたが結果は同じでした・・・
サーバ側の設定の問題でしょうか・・・他のサーバでも試してみます。

[PHPスクリプト]
<?php
header("Content-type: application/x-javascript");
print("document.write('TEST');");
?>

[HTMLファイル]
<body>
<script language="javascript" type="text/javascript" src="http://hoge.com/test.php"></script>
</body>
0585nobodyさん2005/04/08(金) 19:43:24ID:???
[HTML]
<script type="text/javascript" src="test.php"></script>
[PHP]
<?php
header('Content-type:text/javascript');
print 'document.write("テスト")';
?>

でうまくいくんだが(IE6SP1)
0586nobodyさん2005/04/08(金) 19:49:50ID:???
>>584
WinXP + Apache2 +PHP5.0.4 では問題なし
あとhttp://hoge.com/は他人のサイト。http://example.com/を使う。
0587nobodyさん2005/04/08(金) 19:57:50ID:???
<title>タグにphpが吐くソースと違うエンコーディングの文字が入ってたのが
原因でした・・・3回ほど吊ってきます・・・どうもありがとうございました orz
0588nobodyさん2005/04/08(金) 20:15:17ID:???
参照渡しわからんです。

function Hoge(&$arg)
これと
function & Hoge($arg)
のちがいわなんですか>?

0589nobodyさん2005/04/08(金) 20:45:48ID:PH5IR/1K
質問です。

例えば、
http://example.com/login.php
↑のような認証ページを用意し、ログインをさせます。
その際にセッションなりで保持したIDとパスワードを用いて、
ftp://example.com/
↑のようなFTPサーバにブラウザでログインさせたいと思っています。

通常のやり方だと、WEBでログインさせ、再びFTPでも認証ダイアログから
ログインさせるか、あるいはURLに
ftp://ID:[email protected]
↑のようにIDパスワードを混ぜることになり、どちらも不本意です。

どうにかならんものでしょうか?
0590nobodyさん2005/04/08(金) 21:07:52ID:???
動画からサムネイル画像を吐き出すようなライブラリってありますかね?
探してもなかったもんで・・・
0591nobodyさん2005/04/09(土) 01:45:25ID:BWP/VWku
ファイルを取得→保存→一定時間ごとにファイル更新

こんなことがしたいでつ
こういうのを組むのに参考になるサイトだけでいいんで教えてください
0592nobodyさん2005/04/09(土) 03:14:41ID:???
>>591
unix系なら cronjob で好きな時に wget --mirror すればいいだけだろう。
windowsは知らない。
0593nobodyさん2005/04/09(土) 03:32:30ID:???
>>588
リファレンス渡し http://www.php.net/manual/ja/language.references.pass.php
リファレンスによる返り値 http://www.php.net/manual/ja/language.references.return.php
0594nobodyさん2005/04/09(土) 09:46:58ID:???
>>593
リファレンスによる返り値でマニュアル読んでたんですけど
わからないです。
マニュアルには リファレンスを返すことは、結合する変数を見付けるために
関数を使用し たい場合に便利です・・・
pear のMDBとかはじめのconnectionなどで使われています。
結合する変数・・・ うーん難しい
0595nobodyさん2005/04/09(土) 10:17:11ID:???
日本語訳で意味が掴み辛い時は、原文を読めばよい。
Returning by-reference is useful - リファレンスで値を返すことは便利だ
when you want to use a function - 関数を使おうとする時に
to find - 見つけるために
which variable a reference should be bound to. - どの変数をリファレンスと結びつけるか
リファレンスで値を返すのは便利やねん。
どんな時に便利かつーとな、どの変数をリファレンスと結びつけるかを関数でやろうとする時やねん
0596nobodyさん2005/04/09(土) 10:53:53ID:???
質問させて下さい。

レンタルサーバーのさくらで、PHPを使ったサイトを作ってます。
2年間、問題なくうごいていたのですが、何の変更も
していないのに急に動かなくなりました。
さくら側で何か変更したのかと思いきや
何もしていないと言われました。

唯一変更したとすれば、アパッチのmod_rewriteを使用できるように
しました。。。とだけ言われました。

質問が抽象的ですが、いままでうごいていたのに
うごかなくなった場合、どこから手をつけていけば良いのでしょうか?
0597nobodyさん2005/04/09(土) 11:10:36ID:???
どう動かなくなったのかも分からない?
05985962005/04/09(土) 11:25:03ID:???
コメントありがとうございます。
本当に助かります。

具体的には、クリック数をカウントするリダイレクトが
使用できなくなっているのが1つ。

require_once("password.php");

$con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
$selectdb = mysql_select_db($DBNAME, $con);

//クリック数をインクリメントするSQL文を発行
$sql = "update sample set clickcount = ifnull(clickcount, 0) + 1
where no = $no";
mysql_query($sql, $con);

//指定されたURLへリダイレクト
header("Location: " . $url);

$con = mysql_close($con);

もう一つは フォームからのデータの受け渡し系が
うまく作動しておりません。

またまた抽象的なのですが、
どこから手をつけていくと、原因を発見できるのでしょうか?
0599nobodyさん2005/04/09(土) 11:56:43ID:???
管理者とサポセンとは認識が違うだろうけど途中からregister_globalsを変更するとは
思えないんだが・・・
データをあげてphpinfo見てみそ
0600nobodyさん2005/04/09(土) 12:07:15ID:???

ttp://www.sakura.ne.jp/news/20050325-001.news
0601nobodyさん2005/04/09(土) 12:58:22ID:???
テスト運用って有料ユーザーでやる事なのだろうか?_?
06025962005/04/09(土) 13:01:48ID:???
>>599

本当にありがとうございます。
早速、見て見ました。

すると、 register_globals が OFF
でした。以前は ON が仕様でしたが
いつのまにか OFF に・・・・

おいおい 連絡してこいよ 

と思いましたが、まぁ原因が分かったので
よかったです。

私のサイトはONじゃないとうごかないものが
ほとんどでして・・・・

ON が OFF になる。
これだけで大きく被害を受けました。。。。
0603nobodyさん2005/04/09(土) 13:05:47ID:???
mod_rewriteが怪しいと思うなら、htaccessあたりでRewriteEngine offにして動作確認するとか。
オイラなら素直にスクリプトのデバッグをするけども。
きちんとエラー処理をしてれば速攻で問題個所を絞れそうな・・
0604nobodyさん2005/04/09(土) 13:10:17ID:???
すいません、現在のアンカー位置(<a name=〜>で定義するやつ)を
得ようしたんですが、
$_SERVER["REQUEST_URI"]
$_SERVER['QUERY_STRING']
などの情報が取得できないようです。
$_SERVERを$_ENVに変えたり、serverVar("URL")とか試したりしたんですが、
全て値を得ることが出来ませんでした。
他に呼び出された完全なURLを取得する方法などはございませんでしょうか…。

無料のHPスペースなのでhtaccessを触ったりとかそういうことはできませんです。
0605nobodyさん2005/04/09(土) 13:12:36ID:SXkH7OvC
10進数の数字のみの文字列を出来るだけ短い文字列にしてMySQLに入れたいのですが、
256進数(つまり1バイト文字全て使う)に直そうと単純に$string = chr($int)として$stringを入れようとすると、
SQL文のダブルクオーテーションが消えてしまったり、あるいは増えてしまったりしてMySQLに格納出来ません。
何か良い方法は無いでしょうか?
0606nobodyさん2005/04/09(土) 13:16:17ID:???
いったいなんでそんな事をするのか逆に質問したい
0607nobodyさん2005/04/09(土) 13:25:32ID:SXkH7OvC
>>606
MySQLのリファレンスに、インデックスを使う際は対象となるデータの桁数が短いほうが良いと書かれていたからです。
データ容量も落とせると思うし。
0608nobodyさん2005/04/09(土) 13:36:58ID:???
>>604
そもそもブラウザが#以降の文字列を鯖に送出していない。
ブラウザのhttpリクエスト・レスポンスヘッダを見るツールがあるのでそういうので確かめてみるとよい。
ieHTTPHeaders、proxomitron、パケットキャプチャー等。
0609nobodyさん2005/04/09(土) 14:50:00ID:???
>>607
桁数の問題って、そんなに対象のフィールドに入れるデータが
数字が膨大な長さのデータばかりなのか?
よっぽど特殊なデータとか膨大なレコード数になるとかでもない限り
素直に整数型で入れればと思うが
ミクロレベルの問題を凄い上の層でどうにかしようとしてる感が
0610nobodyさん2005/04/09(土) 15:30:06ID:SXkH7OvC
>>609
MySQLは符号無しbigintでも20桁くらいしか扱えませんよね。
それをオーバーしてしまうのです。
その長い10進数の文字列を左から3桁ずつで区切ると各区分のパターン数は256以内に収まります。
そこで、各パターンに0〜255までの数字が1対1に対応するよう割り振り、(最小完全ハッシュのような事)
その数量を256進数に直し、区切っていたものを再結合して一つの文字列にしてMySQLに格納したいのです。
区切らずに全桁で考えたほうがパターン数が節約出来ますが、検索時の事情でそれは出来ません。
3桁の区分ごとに専用のフィールドを用意する事も速度の低下とHDD使用量の増加になってしまうので、
やはり一つの文字列として一つのフィールドに格納したいのです。
0611nobodyさん2005/04/09(土) 15:44:49ID:???
メモ帳でphpファイルを作ってみましたが、ファイル名は××.phpでよろしいでしょうか?
アップしたときに××.
php.txtと出ますが、問題ないでしょうか?
0612nobodyさん2005/04/09(土) 15:47:55ID:???
アップしたんなら開いてみれば問題あるかないか分かると思うけど。
普通にphpファイルとして動作させるのなら.txtは要らない。
0613nobodyさん2005/04/09(土) 15:53:36ID:???
>>612
アップしたらファイル名にtxtと付くんですよ...
何故でしょう?
0614nobodyさん2005/04/09(土) 15:55:07ID:???
>>613
メモ帳で保存した時についてるんじゃ?
アップしたあとでもファイル名変えれば良いだけ。
0615nobodyさん2005/04/09(土) 15:56:09ID:???
CGIを使っているけどユーザーには使わせない鯖なんじゃねぇの
■ このスレッドは過去ログ倉庫に格納されています