メンバーテーブルに準備、実行、フェッチしようとしています。しかし、SQL ステートメントを取得しようとするたびに、エラーが発生します。
これが私のコードです
<?php
include('../database.php');
$errmsg_arr = array();
$errflag = false;
$login = $_POST['login'];
$password = $_POST['password'];
if($login == '') {
$errmsg_arr[] = "Username's missing";
$errflag = true;
}
if($password == '') {
$errmsg_arr[] = "Password's missing";
$errflag = true;
}
if($errflag==true) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
//header("Location: ../index.php");
}
$sql = 'SELECT * FROM members WHERE login=:login && passwd=:passwd';
$login = $pdo->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$pass = hash('sha1',$password,TRUE);
$arr = array(':login' => $login, ':passwd' => $pass);
$login->execute($arr);
$member = $login->fetchAll();
if (!empty($member) ){
foreach($member as $row){echo $row['login'];$_SESSION['SESS_MEMBER_ID'] = $row['member_id'];$_SESSION['username'] = $row['login'];$_SESSION['password'] = $row['passwd'];}
} else {
echo "Error.";
}
//header("Location: ../index.php");
?>
完全なエラー:
Catchable fatal error: Object of class PDOStatement could not be converted to string in /var/www/html/login/login-exec.php on line 22 Call Stack: 0.0002 341584 1. {main}() /var/www/html/login/login-exec.php:0 0.0007 344512 2. PDOStatement->execute() /var/www/html/login/login-exec.php:22
22行目:
$member = $login->fetchAll();
編集以下のすべてを試した後の新しいコードは次のとおりです
$sql = 'SELECT * FROM members WHERE login=:login AND passwd=:passwd';
$login = $pdo->prepare($sql);
$pass = hash('sha1',$password,TRUE);
$arr = array(':login' => $_POST['login'], ':passwd' => $pass);
$login->execute($arr);
var_dump($login);
$member = $login->fetchAll();
print_r($member);
新しいエラー:
object(PDOStatement)#3 (1) { ["queryString"]=> string(59) "SELECT * FROM members WHERE login=:login AND passwd=:passwd" }