###前提・実現したいこと
フォームから取得したidから、データベースに登録されているデータを配列で取得したい。
###発生している問題・エラーメッセージ
while ($row = $rs->fetch(PDO::FETCH_ASSOC)) {を記載した行でエラーになってしまっております。
PHP Warning: Invalid argument supplied for foreach() in /Applications/MAMP/htdocs/model/login_check.php
PHP Fatal error: Call to a member function fetch() on a non-object in /Applications/MAMP/htdocs/model/login_check.php
上記エラーが起こる原因を突き止めて、データを取得したい。
###該当のソースコード
<?php require_once ("../function/dbconect.php"); session_start(); header("Content-type: text/html; charset=utf-8"); //パラメーターの取得 $id = $_POST['id']; $password = $_POST['password']; print("$id<br>"); print("$password<br>"); //DB接続 try{ $dbh = new PDO($dsn, $dbuser, $dbpassword); print('接続に成功しました。<br>'); $sql = 'select * from USERS WHERE ID = ?'; //パラメーターの型を指定 $stmt = $dbh->prepare($sql, array('text')); //パラメーターを渡して SQL 実行 $rs = $stmt->execute(array($id)); $count = 0; while ($row = $rs->fetch(PDO::FETCH_ASSOC)) { $id = $row["id"]; $salt = $row["salt"]; $db_password = $row["password"]; $reset = $row["reset"]; $count++; } }catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } $dbh = null; ?>
###試したこと
・下記ソースに変更してデータが取得できているかの確認>>okでした。
・様々な初心者向けのPDOなどについて記載されている記事を読んで、細かくソースを色々いじってみたのですが、解決しませんでした(変更したソースを記録してなかったため、細かい内容を覚えておりません、申し訳ありません)
<?php require_once ("../function/dbconect.php"); session_start(); header("Content-type: text/html; charset=utf-8"); //パラメーターの取得 $id = $_POST['id']; $password = $_POST['password']; print("$id<br>"); print("$password<br>"); //DB接続 try{ $dbh = new PDO($dsn, $dbuser, $dbpassword); print('接続に成功しました。<br>'); $sql = 'select * from USERS WHERE ID = 1'; foreach ($dbh->query($sql) as $row) { print($row['ID'].'<br>'); print($row['SALT'].'<br>'); } }catch (PDOException $e){ print('Error:'.$e->getMessage()); die(); } $dbh = null; ?>
###補足情報(言語/FW/ツール等のバージョンなど)
php,mysql初心者です。
php/mysqlを使ってログイン機能を作ろうとしております。
参考にしているサイト:https://www.websec-room.com/2015/03/15/2153
かなりの初心者のため上記サイトに提示されているソースを見ながら、分からないところがあれば、都度進めながら進めています。
開発環境
・MAMP
・php5.5.38
・mysql5.6.28
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/10/24 07:26
2016/10/24 08:42