プロが教えるわが家の防犯対策術!

検索フォームを作ろうとしている初心者です。
ネットで探しながら進めてきましたが、全然理解できずに進めてきました。

<?php if (count($errors) === 0): ?>  ←こちらの行でエラー

エラー内容がこちらです
Warning: Undefined variable $errors in C:\xampp\htdocs\teihoku01\pdo_search.php on line 64

Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array, null given in C:\xampp\htdocs\teihoku01\pdo_search.php:64 Stack trace: #0 {main} thrown in C:\xampp\htdocs\teihoku01\pdo_search.php on line 64

sql文が間違えているのかなと考えても全然わからず、こちらに助けを求めました。
こんな初心者で申し訳ないのですが、教えていただけると幸いです。よろしくお願いします。

質問者からの補足コメント

  • $dbh = new PDO($dsn, $user, $password);
    $statement = $dbh->prepare("SELECT * FROM wiper_s WHERE Manufacturer LIKE (:Manufacturer_1) ");

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

      補足日時:2021/07/29 22:14
  • 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'] = "データベース接続失敗しました。";

    }

    ?>

      補足日時:2021/07/29 22:15
  • <!DOCTYPE html>
    <html>
    <head>
    <title>検索結果</title>
    <meta charset="utf-8">
    </head>
    <body>

    <?php if (count($errors) === 0): ?>

    <p><?=htmlspecialchars($Manufacturer, ENT_QUOTES, 'UTF-8')."で検索しました。"?></p>
    <p><?=$row_count?>件です。</p>

      補足日時:2021/07/29 22:16
  • <?php elseif(count($errors) > 0): ?>
    <?php
    foreach($errors as $value){
    echo "<p>".$value."</p>";
    }
    ?>
    <?php endif; ?>


    </body>
    </html>

      補足日時:2021/07/29 22:23
  • HAPPY

    osamuyさん、Ogre7077さん、大変ありがとうございました。
    おかげさまでエラーが改善し進むことができました。
    ベストアンサーを選ぶのが大変心苦しいのですが、sql文の例を教えてくださった
    Ogre7077さんを選ばさせていただきました。
    お二人ともありがとうございました。

      補足日時:2021/07/30 22:57

A 回答 (2件)

$errorsが「未定義(Undefined)」って言ってるので、どこかでタイプミスしてませんか?


$erorrsとか。
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます。確認したところタイプミスはなさそうに思うのですが、、
捕捉にコードの一部を投稿させていただきました。もしよろしければ
確認をお願いしますよろしいでしょうか。

お礼日時:2021/07/29 22:18

変数 $errors が、エラーがない場合に作られていません。


事前に $errors = array() などと空配列を用意してください
    • good
    • 0
この回答へのお礼

回答ありがとうございます!
$errors = array() ですね!
プログラミング全然わかりませんが、楽しくていろいろやってみたいと思っています。ありがとうございました!

お礼日時:2021/07/30 22:42

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