プロが教える店舗&オフィスのセキュリティ対策術

PHPのmysql_queryの変数について
全くの初心者です。
ログイン情報のチェックに使うクラスを調べているのですが、
mysql_queryの結果が表示されなく、原因が分かりません。

ご存知の方がおられましたら、ご教授頂けませんでしょうか。
よろしくお願い致します。


以下が全体のコードです。(1)(2)の問題があります。

<?php
require_once "BaseDB.class.php";
// ログインをするクラス
class Settings extends BaseDB
{
// ユーザ認証
public function isValidUser( $id, $pass )
{

//var $qstring; // SQL文
//var $qresult; // mysql_query関数の結果
//var $fresult; // mysql_fetch_arrayの結果

$this->errors = 0;

// MySQLにデータがあるか調べる
$qstring = "select passwd from b_settings where username='$id'";
//クエリを実行

echo "setting class:<br>";
echo "qstring:<br>";
echo "$qstring<br />";//select passwd from b_settings where username=unknown

$qresult = mysql_query($qstring);
echo "qresult:<br>";

////// (1)ココが表示されない。
echo "$qresult<br>";

if(!$qresult)
{

echo $qresult;
$this->errorm = "ユーザ名が違います。table Error";////////// (2)このエラーが出てしまいます。
$this->errors++;
return false;
}

if(!$fresult = mysql_fetch_array($qresult))
{
$this->errorm = "ユーザ名が違います。";
$this->errors++;
return false;
}
//echo "$pass /" . $fresult['passwd'] . "<br>";

if( $pass == $fresult['passwd'] )
{
//echo "$pass /" . $fresult['passwd'] . "<br>";
return true;
}
else
{
$this->errorm = "パスワードが違います。";
$this->errors++;
return false;
}
}//関数終了

public function loadSettings( $id='' )
{
$qstring = "select maintitle,subtitle,maxtopics," .
"username,passwd,mailaddr from b_settings where id=1";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}
if(!$fresult = mysql_fetch_array($qresult))
{
$this->errorm = "設定情報がありません。";
$this->errors++;
return false;
}

$this->maintitle = $fresult['maintitle'];
$this->subtitle = $fresult['subtitle'];
$this->maxtopics = $fresult['maxtopics'];
$this->username = $fresult['username'];
$this->passwd = $fresult['passwd'];
$this->mailaddr = $fresult['mailaddr'];

return true;
}

public function saveSettings( $id='' )
{
$qstring = "update b_settings set ".
"maintitle = '$this->maintitle', ".
"subtitle = '$this->subtitle', ".
"maxtopics = '$this->maxtopics', ".
"username = '$this->username', ".
"passwd = '$this->passwd', ".
"mailaddr = '$this->mailaddr' ".
" where id=1";
//クエリを実行
$qresult = mysql_query($qstring);
if(!$qresult){
$this->errorm = "DB Error:[$qstring]";
$this->errors++;
return false;
}

return true;
}

// プロパティ参照
function __get( $property )
{
return $this->$property;
}
// プロパティセット
function __set( $property, $value )
{
$this->$property = $value;
}
} //クラス終了
?>

A 回答 (2件)

クラス設計の上ではこっちも参考になるかも・・・


http://qiita.com/mpyw/items/6bd99ff62571c02feaa1
https://github.com/Certainist/sns_php

生のPDOが書きにくければこういった継承クラスも活用してください。
https://github.com/Certainist/PDO2
    • good
    • 0

問題点を多く抱えているので、まずは下記のまとめをご覧ください。



PHPでデータベースに接続するときのまとめ
http://qiita.com/mpyw/items/b00b72c5c95aac573b71

なお、PDOでは PDO::ERRMODE_EXCEPTION を有効にしていれば、今回のようなSQLエラー時には自動的に例外がスローされるのですぐミスに気づけます。

(非推奨) 一応Mysql関数でのエラーの原因はmysql_error()で確認はできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!