[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 2chのread.cgiへ]
Update time : 06/01 12:02 / Filesize : 180 KB / Number-of Response : 739
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPHP(超初心者用)5



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/

623 名前:nobodyさん [2009/01/31(土) 01:07:34 ID:Zjr5MV5E]
>>621 説明足らずで すまん ありがとう。要は管理人専用ページでこのスクリプトを使用した時に$_SERVER['PHP_SELF']だと現在いじってる(管理人専用ページ)でスクリプトが実行されてしまうんではないかと。
あくまで表示したいのはindex.phpなので、そこんとこどうなんかなーと思いまして。

>>620
と、いうことは$_SERVER['PHP_SELF']を$_SERVER['index.php']にしたらいいってことですか?

624 名前:nobodyさん mailto:sage [2009/01/31(土) 01:09:00 ID:???]
お前は何を言ってるんだ?

625 名前:615 [2009/01/31(土) 01:27:06 ID:myPf0iH/]
>>621
<?php
$temp = "epg.2ch.net/tv2chwiki/subject.txt";
$html_f=file_get_contents($temp);
$replace = "(2)";
$scriptphp = "<br />";
$word = str_replace($replace, $scriptphp, $html_f);
$hogeru = ".dat<>";
$gogeta = "<br />";
$yabai = str_replace($hogeru, $gogeta, $word);
print $yabai;
print($word1_a);
?>

から、偶数行だけ表示するにはどうしたらいいんでしょうか?



626 名前:nobodyさん [2009/01/31(土) 01:27:12 ID:Zjr5MV5E]
すみません。ようやく分かってきました。
$_SERVER['PHP_SELF'] これ書かなきゃいいんですね。

じゃあそのかわりformのactionにはなんて書けばいいんですかね?

627 名前:nobodyさん mailto:sage [2009/01/31(土) 01:28:37 ID:???]
actionの意味知らんの?

628 名前:nobodyさん [2009/01/31(土) 01:30:22 ID:Zjr5MV5E]
正直なところform処理いじったことがありませんもので…。非常に申し訳ないんですが教えてくれると助かります…

629 名前:621 mailto:sage [2009/01/31(土) 01:35:09 ID:???]
>>625 最初からそれをいいたまへ

$rtn = file( 'epg.2ch.net/tv2chwiki/subject.txt ' );
for ( $n = 0; $n < count( $rtn ); $n = $n + 2 ) echo $rtn[$n];


630 名前:621 mailto:sage [2009/01/31(土) 01:38:56 ID:???]
>>623 やっと意味がわかった。管理人は管理人ようのページを作り給え

631 名前:nobodyさん [2009/01/31(土) 01:46:56 ID:Zjr5MV5E]
>>630ありがとうございます。じゃあ$_SERVER['PHP_SELF']はいらないってことですかね?



632 名前:nobodyさん mailto:sage [2009/01/31(土) 01:55:22 ID:???]
>>631

<? // index.php
if ( $_POST['textbox' != '' ) { なんか処理 }
?>
<html><body>
<form action="index.php" method="post>
<input type="text" name="textbox" value=""><input type="submit"
</form>
</body></html>



<? // kanri_index.php
if ( $_POST['textbox' != '' ) { なんか処理 }
?>
<html><body>
<form action="kanri_index.php" method="post>
<input type="text" name="textbox" value=""><input type="submit"
</form>
</body></html>

を作れ

633 名前:nobodyさん mailto:sage [2009/01/31(土) 01:59:14 ID:???]
いやindex.phpでいいだろ

634 名前:nobodyさん mailto:sage [2009/01/31(土) 02:06:10 ID:???]
色んなやり方あるけど初心者だそうだからいちばん新ぷりに

635 名前:nobodyさん [2009/01/31(土) 13:18:26 ID:Zjr5MV5E]
ありがとうございます!ようやくわかった気がします。actionって動作させたいファイル名を指定したらいいんですね。
これでなんとかなりそうです。ありがとうございました!

636 名前:nobodyさん mailto:sage [2009/01/31(土) 19:25:28 ID:???]
prepareの使い方で質問があります。
下記のコードを実行すると
Call to a member function prepare() on a non-object
とエラーが返ってきます。

$sql = "insert into table (column2,column1) values(?,?)";
$sth = $this->db->prepare($sql);
$result = $this->db->execute($sth, array($column2_value,$column1_value));

プレースホルダを使わずqueryを発行すると問題なくdbが更新されるのですが、
どこかおかしいのでしょうか

637 名前:nobodyさん mailto:sage [2009/01/31(土) 19:26:42 ID:???]
すみません、環境書き忘れました。
php5,postgresです

638 名前:nobodyさん mailto:sage [2009/01/31(土) 19:28:26 ID:???]
>636
どのクラスのprepareだよこの馬鹿馬鹿まんこ!

$this->dbが接続失敗か何かで初期化されていないように思われる。

639 名前:nobodyさん mailto:sage [2009/01/31(土) 20:01:51 ID:???]
レスどうもありがとうございます。
そのあたりを探ってみます。


640 名前:nobodyさん mailto:sage [2009/01/31(土) 20:02:31 ID:???]
いや$dbのnewしてるとこ見れば一発だろw

641 名前:nobodyさん mailto:sage [2009/01/31(土) 20:16:52 ID:???]
出来ました。どうもありがとうございます。
さっきのエラーは昔書いたクラスコピペして直したら出なくなったのですが、
dbが更新されなくて悩んでいたら文字コードの違いが原因でした。

mb_convert_encodingで挿入する値をdbの文字コードに直して解決しました。
お世話様でした。



642 名前:nobodyさん [2009/01/31(土) 20:23:42 ID:QDNvJIlq]
sqlite php5 利用です。
登録メールアドレスの重複チェックをしたいのですが、うまく動きません。
if(!$db=sqlite_open("database/database.sqlite",0666,$err)){
die("データベース接続エラー".$err."<br>");
}
////////////////////////////データベース二重登録防止////////////////
$check_sql="SELECT * FROM add_table WHERE add = '$mailadd'";
if($abc = sqlite_query($db,$check_sql)){
header("Location: mail.php?miss=miss&miss_naiyou=sumi");
    //登録済みの場合は飛ばす
}
sqlite_close($db); //データベースクローズ

643 名前:nobodyさん mailto:sage [2009/01/31(土) 20:26:51 ID:???]
>>642
jp2.php.net/sqlite_query

644 名前:nobodyさん [2009/01/31(土) 20:31:10 ID:lgngjuqH]
<?php
$temp = "epg.2ch.net/tv2chwiki/subject.txt";
$html_f=file_get_contents($temp);
$br = "<br />";
$replace = "(2)";
$word = str_replace($replace, $br, $html_f);
$replace = ".dat<>";
$word = str_replace($replace, $br, $word);
$replace = "res/min";
$word = str_replace($replace, $br, $word);
$replace = "] ";
$word = str_replace($replace, $br, $word);
$a = explode( "<br />", $word );
$b[0]= "g";
print $a[2]; print $br; //…(1)
print $b[0]; print $br;
$strs[0] = "srename :"+ $a[2] +",";//…(2)
$strs[1] = $b[0];
print $strs[0]; print $br;//…(3)
print $strs[1];
?>
出力
[NHK総合]探検ロマン世界遺産
g
0
g


(3)の$strs[0] が0になってしまうのはなんでですか?
おねがいします。

645 名前:nobodyさん [2009/01/31(土) 20:33:43 ID:QDNvJIlq]
>>643
マニュアル見てもさっぱりわかりません


646 名前:nobodyさん mailto:sage [2009/01/31(土) 20:39:00 ID:???]
>>644
+を.にかえてみ

647 名前:nobodyさん mailto:sage [2009/01/31(土) 20:40:47 ID:???]
>>645
じゃ諦めれ

648 名前:nobodyさん mailto:sage [2009/01/31(土) 20:42:10 ID:???]
>>646
おーできました
ありがとうございます!!

649 名前:nobodyさん [2009/01/31(土) 20:59:19 ID:QDNvJIlq]
>>642
解決しました。
if(sqlite_fetch_array(sqlite_query($db,$check_sql))){
header("Location: mailmagazine.php?miss=miss&miss_naiyou=sumi");
}

>>643
ありがとうございます

650 名前:nobodyさん mailto:sage [2009/02/01(日) 21:04:08 ID:???]
質問です
elseif (preg_match("/^\d{8}$/", $_GET["id"])){
$id = $_GET["id"];
}
GETで8桁の数字のみ受け取るように↑のようにしましたが
if文でマッチしてても変数に代入する際はpreg_matchなりで
GET変数内を数字のみとなるように変換した方がいいものなんでしょうか

651 名前:nobodyさん mailto:sage [2009/02/01(日) 21:10:26 ID:???]
お前は何を言ってるんだ



652 名前:nobodyさん mailto:sage [2009/02/01(日) 21:11:12 ID:???]
>650
俺ならctype_digit($str) && strlen($str) === 8
まあそれはそれとして、別にいいんじゃね。その正規表現にマッチしてるなら間違いなく数字だけだし。

653 名前:nobodyさん mailto:sage [2009/02/01(日) 21:16:32 ID:???]
末尾の$は改行にもマッチするから数字だけとは限らないんじゃ?

654 名前:nobodyさん mailto:sage [2009/02/01(日) 22:42:37 ID:???]
ググってたら遅くなりました
>>652
matchに漏れがなければ問題ないように思たんですが
あげてもらった関数の方が確実 でしょうか
>>653
正規表現はまだよくはわかってないのですがググったところ
\r\nのことでしょうか。
scripting.cocolog-nifty.com/blog/2008/12/post-c9b4.html
ここを参考に一応"/^\d{8}\r?$/"としてみましたが
>hoge$に掛かりません
の理屈が今一わかりません。

655 名前:650 mailto:sage [2009/02/01(日) 22:56:05 ID:???]
よく考えたら\rが混じる時点で正常なデータではないので
もとの"/^\d{8}$/"で問題なしな気がしますがどうなんでしょう


656 名前:652 mailto:sage [2009/02/01(日) 23:22:37 ID:???]
重視したのは分かりやすさ。正規表現だと、何を意味しているのか分かりづらい。
パターンがよほど複雑な時以外は正規表現は避けたほうがいい。

>653-654
改行とか忘れてたわ。
if(preg_match("/^\d{8}$/", "12345678\n")){
 echo 'match';
}

657 名前:nobodyさん mailto:sage [2009/02/03(火) 00:43:02 ID:???]
半年ロムってろと言われてずっと見てきたが
もうPHP諦めることにした。さっぱり分からん。

このスレのどこが超初心者用なんだ。

658 名前:nobodyさん mailto:sage [2009/02/03(火) 01:51:58 ID:???]
3年ROMってろ

659 名前:nobodyさん mailto:sage [2009/02/03(火) 02:00:14 ID:???]
もう、諦めたんだ放って置いてくれw
プログラムなんて嫌いだ。

660 名前:nobodyさん mailto:sage [2009/02/03(火) 09:47:26 ID:???]
何が分かんないんだよ

661 名前:nobodyさん mailto:sage [2009/02/03(火) 10:34:27 ID:???]
放っておいてやれよ



662 名前:nobodyさん mailto:sage [2009/02/03(火) 14:10:58 ID:???]
なんか残念だな...。

このスレだけ読み続けても、超初心者が分かるようにはならないと思う。
このスレは、超初心者も質問していいというだけで、来る質問が全部、
超初心者向けというわけではないから。

もう見てないかもしれないけれど、入門書を図書館とかで借りてきたほうが
いいと思うよ。


663 名前:nobodyさん mailto:sage [2009/02/03(火) 14:18:03 ID:???]
PHPなんってググって触ってみりゃ、どうにでもなるものを、
半年もROMってわからないなんて、ネタに決まってるだろ
もしネタじゃないなら、10年はROMるべき。
そうして人生が終わるさ

664 名前:nobodyさん mailto:sage [2009/02/03(火) 20:28:48 ID:???]
人生も諦めたらスッキリするのに

665 名前:nobodyさん mailto:sage [2009/02/04(水) 06:33:54 ID:???]
>>664
全く原因が分からないのでお聞きしたいのですが…

$im=createimagefromjpeg(image.jpg);
imagejpeg($im);
destroy

上記の様な単純な記述で画像を開きたいのですが、
ローカルならできるのになぜかインターネット経由だと
できないのです…
実行すると半角で「リ」と表示されるだけで
print hoge;などを付け足しても何もかわりません

phpinfoでGDが使えることは確認したのですが、
他に原因が思いつきません
初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします

666 名前:nobodyさん mailto:sage [2009/02/04(水) 06:34:18 ID:???]
>>664
全く原因が分からないのでお聞きしたいのですが…

$im=createimagefromjpeg(image.jpg);
imagejpeg($im);
destroy

上記の様な単純な記述で画像を開きたいのですが、
ローカルならできるのになぜかインターネット経由だと
できないのです…
実行すると半角で「リ」と表示されるだけで
print hoge;などを付け足しても何もかわりません

phpinfoでGDが使えることは確認したのですが、
他に原因が思いつきません
初心者丸出しすいませんが教えていただければ尻丸出しにしますのでどうかお願いします

667 名前:nobodyさん mailto:sage [2009/02/04(水) 06:50:26 ID:???]
image.jpgがないんでね?

668 名前:nobodyさん mailto:sage [2009/02/04(水) 08:17:43 ID:???]
>>666
MIMEヘッダー出してる?

669 名前:nobodyさん mailto:sage [2009/02/04(水) 10:03:22 ID:???]
ああそれだな

670 名前:nobodyさん mailto:sage [2009/02/04(水) 17:18:03 ID:???]
>>667
確かにファイルは存在しています・・・
>>668
MIMEヘッダーは
header("content-type: image/jpeg");
で出力できてますでしょうか?
ご指摘の後にこれを追加してやってみてのですがだめでした。
ただ、文字化けのような表示から画像を表示できていないマーク?
のような表示にはかわりました・・・

671 名前:nobodyさん mailto:sage [2009/02/04(水) 17:25:29 ID:???]
>>670
imagecreatefromjpeg
にしてみたら?
それで、$imがfalseになってないかチェック
それから、imageやheaderを出力する前に余計な出力をしないように、ソースの冒頭でob_startして、直前で破棄





672 名前:nobodyさん mailto:sage [2009/02/04(水) 17:39:12 ID:???]
ところで皆さんPHPとMYSQLは勉強し始めて
どれくらいの期間で使えるレベルになりましたか?

673 名前:nobodyさん mailto:sage [2009/02/04(水) 17:41:17 ID:???]
使うだけなら書籍読みつつ1日でカバーできる範囲
使いこなすまでは相当かかったが

674 名前:nobodyさん mailto:sage [2009/02/04(水) 17:50:34 ID:???]
>>670
「image.jpg」→「"image.jpg"」

675 名前:nobodyさん mailto:sage [2009/02/04(水) 18:10:51 ID:???]
"imagejpg"になってたりするのか

676 名前:nobodyさん mailto:sage [2009/02/04(水) 18:32:32 ID:???]
そもそもcreateimagefromjpegなんて標準関数はないわけだが
imagecreatefromjpeg(string $filename)ならあるけど

677 名前:nobodyさん mailto:sage [2009/02/04(水) 18:33:11 ID:???]
単純にサーバにGDライブラリがはいってないだけなんじゃね?
phpinfoみてみれ

678 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:31 ID:???]
>>677
>>666

679 名前:nobodyさん mailto:sage [2009/02/04(水) 18:37:52 ID:???]
>>676
>>671

680 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:31 ID:???]
書いたとおりに載せないで情報小出しにしてる時点でもう答えようがない

681 名前:nobodyさん mailto:sage [2009/02/04(水) 18:38:39 ID:???]
要するに釣り



682 名前:666 mailto:sage [2009/02/04(水) 20:04:43 ID:???]
お騒がせ致しました

釣りではないのです

広告自動表示のレンタルサーバーを使用していたためにうまくいかなかったようです

広告無しのサーバーでは問題なく表示できました。

ありがとうございました


683 名前:nobodyさん mailto:sage [2009/02/04(水) 22:08:23 ID:???]
広告自動挿入のサーバーだと
ヘッダー情報ってだめなの?

684 名前:nobodyさん mailto:sage [2009/02/04(水) 22:09:01 ID:???]
PHPの講師やりたいんだけど、
どこの学校がおすすめ?

685 名前:nobodyさん mailto:sage [2009/02/04(水) 22:31:36 ID:???]
学校行ってまでPHP学びたいと思うか?

686 名前:nobodyさん mailto:sage [2009/02/04(水) 22:37:41 ID:???]
>>685
だって一日で20万もらえるってよ
バカらしくてコーダーなんかやってられないよ

687 名前:nobodyさん mailto:sage [2009/02/04(水) 22:41:25 ID:???]
SQL(SQLite)なんですが単対多のデータを取得したら
|A|a|1|
|A|a|2|
|A|b|1|
|A|b|2|
|B|c|1|
|B|d|1|
みたいになるじゃないですか。
重複した項目をまとめて(A,(a,b),(1,2)),(B,(c,d),1)な感じにする関数てあるんでしょうか。


688 名前:nobodyさん mailto:sage [2009/02/04(水) 22:46:57 ID:???]
>>685
pdoj.wordpress.com/2009/02/04/fetch-modes/

とりあえず翻訳やってみたけど、どう?

689 名前:nobodyさん mailto:sage [2009/02/04(水) 22:50:36 ID:???]
>>687
pdoとかMDBとかにあるよ
sqliteは知らんけど

690 名前:nobodyさん mailto:sage [2009/02/04(水) 22:52:37 ID:???]
>>688
ドキュメントの翻訳で「〜と思う」なんて普通使わない

691 名前:nobodyさん mailto:sage [2009/02/05(木) 00:20:18 ID:???]
>>689
ありがとうございます。
探したらfetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP)がそれらしいです。
ただマニュアルの例で例えると
array(3) {
["apple"]=>
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(5) "apple"
}
みたいな感じにカラム0の値しか取得できてないようです。
自分がどこか間違ってるのかSQLiteが対応してないのか...
もう少し試してみます。



692 名前:nobodyさん mailto:sage [2009/02/05(木) 00:47:17 ID:???]
>>691
ほい
jp2.php.net/manual/ja/pdostatement.fetchall.php

693 名前:nobodyさん mailto:sage [2009/02/05(木) 00:49:12 ID:???]
$str = '4,980 円';

↑みたいなフォーマットの価格データを整数値にしたいんだけど
↓よりシンプルにやる方法ってある?

$str = str_replace(array(' ', ',', '円'),array('', '', ''),$str);

694 名前:nobodyさん mailto:sage [2009/02/05(木) 00:51:20 ID:???]
$str = (int)str_replace(',','',$str)

695 名前:nobodyさん mailto:sage [2009/02/05(木) 00:54:43 ID:???]
ありがとうg

696 名前:nobodyさん mailto:sage [2009/02/06(金) 21:22:00 ID:???]
>>692
MySQLでも試してみたのですが結果は同じでサンプルのような結果にならないのですが
どこか捉え違いしているのでしょうか。
PHP 5.2.6/MySQL 5.0.4
|apple|red|
|banana|yellow|
|apple|green|
という内容として、
$dbh = new PDO('mysql:〜','root','root');//もしくは'sqlite:〜'
$sql = "SELECT name,color FROM table1";
$sth = $dbh->prepare($sql);
$sth->execute();
$result = $sth->fetchAll(PDO::FETCH_COLUMN|PDO::FETCH_GROUP,0);
var_dump($result);
$stmt = null;
結果
array(2) {
["apple"]=>
array(2) {
[0]=>
string(5) "apple"
[1]=>
string(5) "apple"
}
["banana"]=>
array(1) {
[0]=>
string(6) "banana"
}
}
となります。

697 名前:nobodyさん mailto:sage [2009/02/06(金) 21:29:26 ID:???]
サンプルのような結果と言われても、サンプルのような結果がどんなもんだかわからんからね。

とりあえず、FETCH_GROUPなんだし、結果が正しいように思うが?

698 名前:nobodyさん mailto:sage [2009/02/06(金) 21:34:36 ID:???]
まぁ、試しに
PDO::FETCH_COLUMN|PDO::FETCH_GROUP
じゃなく
PDO::FETCH_ASSOC|PDO::FETCH_GROUP
にしてみたら?

699 名前:nobodyさん mailto:sage [2009/02/06(金) 21:39:06 ID:???]
>>697
失礼、サンプルは>>692にもあるPDOStatement->fetchAllの例3です。
期待した結果は
["apple"]=>
array(2) {
[0]=>
string(5) "red"...
なんですが、>>696が正しいということはやっぱりなにか勘違いしてるのかなぁ

700 名前:nobodyさん mailto:sage [2009/02/06(金) 21:43:25 ID:???]
あぁそれか、fetchAllの第2引数に0が入ってるじゃん、だから、カラムが制約されてる
それ、外したらどうなる?


701 名前:nobodyさん mailto:sage [2009/02/06(金) 21:48:42 ID:???]
array(2) {
["apple"]=>
array(2) {
[0]=>
string(3) "red"
[1]=>
string(5) "green"
}
["banana"]=>
array(1) {
[0]=>
string(6) "yellow"
}
}

になったけど



702 名前:nobodyさん mailto:sage [2009/02/06(金) 21:49:22 ID:???]
ああすまん本人じゃなくて俺の環境でやったらってことね


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の専用の関数がある。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<180KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef