dポイントプレゼントキャンペーン実施中!

独学で勉強してます。なんとなくエラーの意味はわかっているのですが、どう直したらよいのかわからず、ご教授していただけると助かります。
エラー内容
Warning: Undefined variable $rows in C:\xampp\htdocs\test_page\pdo_search.php on line 79
Warning: foreach() argument must be of type array|object, null given in C:\xampp\htdocs\test_page\pdo_search.php on line 79

79行目 → foreach($rows as $row){

try{
$dbh = new PDO($dsn, $user, $password);
$statement = $dbh->prepare("SELECT * FROM wiper_s WHERE Name LIKE (:name_1) ");
$errors = array();

if($statement){
$Name = $_POST['name_1'];
$like_name = "%".$Name."%";
//プレースホルダへ実際の値を設定する
$statement->bindValue(':name_1', $like_name, PDO::PARAM_STR);

if($statement->execute()){
//レコード件数取得
$row_count = $statement->rowCount();

while($row = $statement->fetch()){
$rows[] = $row; ←ここが原因だと思うのですが、どう書き換えたら                               よいのでしょうか。
}

}else{
$errors['error'] = "検索失敗しました。";
}

//データベース接続切断
$dbh = null;
}

}catch (PDOException $e){
print('Error:'.$e->getMessage());
$errors['error'] = "データベース接続失敗しました。";
よろしくおねがいします。

A 回答 (2件)

まったく同じ質問の様ですが、


https://oshiete.goo.ne.jp/qa/12488064.html

以下ではダメでしたか?

// Undefined variable 対策として、必ず rows 変数を定義
// must be of type array 対策として、必ず配列に初期化
$rows = array();
while (...) $rows[] = ...;

または

// 未定義の rows ならば、そもそも処理しなくてよい
if (isset($rows)) { ... }
    • good
    • 0

細かく見てませんが、あなたがやりたいのは↓こういうことでは?



while($row = $statement->fetch()){
$rows[] = $row;
}



$rows = $statement->fetch(PDO::FETCH_ASSOC);
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!