スレッド表示 | フラット表示〕 全トピック 920 件中 204 番目 次≫ ≪前

クラス内のデータベース接続について

created: 2006-08-11 16:12 | modified: 2006-08-12 15:18 | reply: 4

[3221] クラス内のデータベース接続について

user: teru | created: 2006-08-11 16:12
//環境------------------------------------------------------------
Windows XP
apache_2.0.58-win32
php-5.1.4
mysql-essential-5.0.22-win32


//例文------------------------------------------------------------
class user{

public function user_renew(){

if($_POST['user_regist']){

$this -> user_name = $_POST['user_name'];
$this -> password = MD5($_POST['password']);
$this -> last_name = $_POST['last_name'];
$this -> first_name = $_POST['first_name'];

$sql = <<<EOS
update admin

SET
user_name ='$user_name',
password ='$password',
last_name ='$last_name',
first_name ='$first_name'

WHERE
id = $id

EOS;

if(preg_match("/Windows/", $_ENV["OS"])){
$sql = mb_convert_encoding( $sql, "SJIS", "EUC-JP");
}

}
}
}



//-------------------------------------------------------------
いつもご参考にさせていただいております。
PHP初心者です。

クラスについて勉強中です。

上記例文のような、POSTされた情報を変数に格納し、
データベースに登録すると言うような流れを作って見たのですが、
データベースには、すべてNULLの状態になってしまいます。

POSTされた情報を格納した変数からSETされた変数への受け渡しがうまくいっていないようなのですが、どこに問題があるのか悩んでいます。

検証として、クラス外ではちゃんと動きました。
クラス内の場合、何か特殊な記述方法が必要なのでしょうか?

お解かりになる方がいらっしゃいましたら、ご助言宜しくお願いします。
reply: 3222 返信 編集 削除

[3222] プロパティと変数

user: ゆうじ | created: 2006-08-11 17:01
こんにちは。

$_POSTから獲得した値は、
userクラスのプロパティに代入してるのに、
SQL文を組み立てる部分では
初期化されて無い変数を使ってますよ。

update admin
SET
user_name ='$this->user_name',
password ='$this->password',
last_name ='$this->last_name',
first_name ='$this->first_name'
WHERE
id = $id
Parent: 3221  reply: 3223 返信 編集 削除

[3223] Re.プロパティと変数

user: teru | created: 2006-08-11 17:20
ゆうじさんこんにちは。
ご助言ありがとうございました。

私も今ちょうど問題を解決したところでした。

ゆうじさんが言うように、$this -> も試してみたのですが
うまくいかず悩んでいました。。。

先ほど、本を見ていたら、{}こんな記述が目に付いたので、試してみたところ、うまくいきました。


SET 
user_name ='{$this -> user_name}',
password ='{$this -> password}',
last_name ='{$this -> last_name}',
first_name ='{$this -> first_name}'
WHERE
id = $id

本当にありがとうございました。

今後とも宜しくお願いいたします。
Parent: 3222  reply: 3224 返信 編集 削除

[3224] Re.プロパティと変数 - 補足

user: ゆうじ | created: 2006-08-11 18:23
ゆうじさんが言うように、$this -> も試してみたのですが
うまくいかず悩んでいました。。。

一応、私のコードでもSQL文は確認出来てましたが、
-> の両サイドにあるスペースの違いですね。
後々誰かが勘違しないよう、ちょっと補足しますね。

$this -> user_name
~ ~

文字列の中に埋め込んだ場合は、このスペースのために
ひとつのプロパティとして認識されないのでしょう。
変数 $this と、文字列 '->' と 'user_name'、のように展開されてるわけです。
大括弧を使うと、文字列として展開される前に
PHPがパースするのでOKになったと考えられます。


尚、このスペースを挟んだ書き方は初めて拝見しました。
ポリシーが絡むので余計なおせっかいになりますが、
teruさん以外の誰かが、
このスクリプトに手を加える可能性が少しでもあるなら、
スペースは入れない方が良い気がしています。
Parent: 3223  reply: 3225 返信 編集 削除

[3225] Re.Re.プロパティと変数 - 補足

user: teru | created: 2006-08-12 15:18
ゆうじさん、ありがとうございました。

ホントに勉強になりました。

今日から->にはスペースは使いません。(苦笑

ポリシーで書いていた訳ではないのですが、
なんでスペースを使っていたのかわかりません。
と言うか、スペースがこんなにも重要だとは思いませんでした。

無知な結果でお騒がせいたしました。

本当に参考になりました。

ありがとうございます!m(__)m
Parent: 3224  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 204 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑