2016-12-20 9 views
3

このコードを修正するのを手伝ってください。 ラインPDOstatement :: execute()は、パラメータ1が配列になることを期待します。

$stmt->execute($params = [], $query); 

でエラーと私はDreamweaverのと、ファイルを開くときに、すべての "$のparams = []は" エラーです。

-Databasse.php-

<?php 

include_once('connection.php'); //my connection is here 

class Database extends connection{ 


public function __construct(){ 

    parent::__construct(); 
} 

public function getRow($params = [], $query){ 
    try { 
     $stmt = $this->datab->prepare($query); 
     $stmt->execute($params); 
     return $stmt->fetch(); 
    } catch (PDOException $e) { 
     throw new Exception($e->getMessage()); 
    } 

} 

public function getRows($query, $params = []){ 
    try { 
     $stmt = $this->datab->prepare($query); 
     $stmt->execute($params); 
     return $stmt->fetchAll(); 
    } catch (PDOException $e) { 
     throw new Exception($e->getMessage()); 
    } 
} 

これは、ソースコードのdatabase.phpでの半分

+0

代わりに '$ params = array()'を試してみてください。 '[]'で配列を宣言することは、PHPの古いバージョンではサポートされていません。 – CGriffin

+0

どのようなエラーが発生していますか、どのクエリ/パラメータを渡していますか?いくつかの詳細を追加してください –

+1

エラーラインはあなたのコードにありません。関数を呼び出すときに変数を代入する必要はありません。また、Dreamweaverが正しいバージョンのPHPに設定されていない可能性があります。コードを実行しようとすると、どのようなエラーが発生しますか? – aynber

答えて

2

コードの詳細を参照する必要がある - あなたのクエリ文字列は何ですか、どのような配列のw /何の値あなたはそれにフィードしようとしていますか?

通常、クエリには疑問符(?)が付いているか、値のプレースホルダとしてコロン(:mykeyword)のキーワードがあり、配列には「準備済み」の値が格納されて実行されます。

$query="select name from users where name=? and passwordHash=?"; 
$res=$connection->prepare($query); 
$res->execute(array(
    "myuser", 
    "dd02c7c2232759874e1c205587017bed"), 
    ); 

// OR 

$query="select name from users where name=:name and passwordHash=:passwordHash"; 
$res=$connection->prepare($query); 
$res->execute(array(
    ":name" => "myuser", 
    ":passwordHash" => "dd02c7c2232759874e1c205587017bed"), 
    ); 

このないクエリの準備など、エスケープと「myuserの」値は、最初の疑問符を置き換えて、ハッシュ文字列が第二に置き換えられます。