-2

データベースに文字列が存在するかどうかを確認しようとしています。しかし、「致命的なエラー: 8行目の非オブジェクトでメンバー関数fetch()を呼び出します」というエラーメッセージが表示され続けます

$string = random_string(30);

$sql = create_sql(); //returns a PDO object with connection to the database
$data = $sql->prepare("SELECT * FROM session WHERE string =:string");
$data->bindParam(':string', $string);
$data = $data->execute();

$row = $data->fetchAll();

if(empty($row)){
4

1 に答える 1

1

あなたのコードは を使用していますfetchAll()が、バグはかなり明白です。qwertynlのコメントは正しいです。上書き$dataしているため、後でオブジェクトではないため、またはメソッドPDOStatementを使用できません。fetch()fetchAll()

コードを次のように更新すると、問題なく使用できるようになります。

$string = random_string(30);

$sql = create_sql(); //returns a PDO object with connection to the database
$stmt = $sql->prepare("SELECT * FROM session WHERE string =:string");
$stmt->bindParam(':string', $string);
$stmt->execute();

$data = $stmt->fetchAll();
于 2013-12-29T15:55:52.607 に答える