0

php class他のスクリプトから好きなクエリを実行するために、小さなスクリプトで使用する を作成しました。これは公に使用されたり、本番環境で使用されることはありません。私は、これがもたらす大きなセキュリティ上の問題を認識しています!

クラスなどについて学ぶための演習としてこれを行いました...どこかでエラーを引き起こしているコード内の特定の行に問題があるようです。配列を返そうとしているためだと思いますが、クラスで適切に定義していないと思います。

$this->resultOfQuery = mysqli_fetch_array($this->out_Resource, MYSQLI_ASSOC));

これがコード全体です。

<?php

class GetRandomRecord {

//Connection
    public $CUDBName;   
    public $CUHost;     
    public $CUUser;     
    public $CUPassword; 
    public $in_SQL;
    public $out_Resource;
    public $CULink;  

    public $message;

    public $errors = array();         // is this correct?
    public $resultOfQuery = array();  // is this correct?

/****************************************************************/
    public function setSQL($value){
        $this->in_SQL = $value;
        return $this->in_SQL; 
    }

/****************************************************************/
    public function setConnectionString($db,$host,$user,$password){

        $this->CUDBName   = $db;
        $this->CUHost     = $host;
        $this->CUUser     = $user;
        $this->CUPassword = $password;

    }

/****************************************************************/
    public function runSQL() {

        $this->CULink  = mysqli_connect( $this->CUHost , $this->CUUser , $this->CUPassword , $this->CUDBName);

        if (mysqli_connect_errno()) {
            $this->message = "Connection failed: ".mysqli_connect_error();
            return $this->message;
        }


        $this->out_Resource  =  mysqli_query($this->in_SQL , $this->CULink);


        if (!$this->out_Resource)
        {
            $this->errors['sql']      = $this->in_SQL; 
            $this->errors['eeDBName'] = $this->CUDBName;
            $this->errors['eeLink']   = $this->CULink;
            $this->errors['status']   = "false"; //There was a problem saving the data;

            mysqli_close($this->CULink);

            return json_encode($this->errors);
        }
        else
        {                   

        // success
            $this->resultOfQuery = mysqli_fetch_array($this->out_Resource, MYSQLI_ASSOC));
            mysql_close($this->CULink);     
            return $this->resultOfQuery;

        } // if (!mysql_query( $CUDBName , $sql , $CULink))



    }
/****************************************************************/

}//class

$recordGet = new getRandomRecord();

$recordGet->setConnectionString('databasename','localhost','username','password');

// select count from database
$tableName = "userList";

$countSQL = "select count(*) from $tableName";

$recordGet->setSQL($countSQL);

$result = $recordGet->runSQL();

print_r($result);

?>

問題を特定するのを手伝ってもらえますか?

編集:実際には、特定のエラーメッセージはありません。通常、コードがダフであることを意味するがあり、HTTP Error 500それを引き起こした行が見つかるまで、コードのセクションにコメントを付けて絞り込みました。

4

1 に答える 1

0

64 行目に余分な閉じ括弧があります。

$this->resultOfQuery = mysqli_fetch_array($this->out_Resource, MYSQLI_ASSOC));

行は次のようになります。

$this->resultOfQuery = mysqli_fetch_array($this->out_Resource, MYSQLI_ASSOC);
于 2013-05-16T10:40:05.627 に答える