
検索フォームを作ろうとしている初心者です。
<?php
foreach($rows as $row){ ←この行でエラーが発生しました。
?>
<tr>
<td><?=htmlspecialchars($row['Manufacturer'],ENT_QUOTES,'UTF-8')?></td>
<td><?=htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8')?></td>
<td><?=htmlspecialchars($row['Model year'],ENT_QUOTES,'UTF-8')?></td>
<td><?=htmlspecialchars($row['Model'],ENT_QUOTES,'UTF-8')?></td>
<td bgcolor = "ffff00"><?=htmlspecialchars($row['right'],ENT_QUOTES,'UTF-8')?></td>
<td bgcolor = "ffff00"><?=htmlspecialchars($row['left'],ENT_QUOTES,'UTF-8')?></td>
<td bgcolor = "ffff00"><?=htmlspecialchars($row['Rear'],ENT_QUOTES,'UTF-8')?></td>
<td><?=htmlspecialchars($row['備考'],ENT_QUOTES,'UTF-8')?></td>
</tr>
<?php
}
?>
エラー内容がこちら
Warning: Undefined variable $rows in C:\xampp\htdocs\teihoku01\pdo_search.php on line 85
Warning: foreach() argument must be of type array|object, null given in C:\xampp\htdocs\teihoku01\pdo_search.php on line 85
どんな原因なのでしょうか…
No.7ベストアンサー
- 回答日時:
定義されていない変数エラーは、
当然ながら定義処理が抜けているから発生します。
if や for や while 文のブロック中で変数定義している場合、
条件によってはブロック内が実行されないので、
エラーが発生する可能性が常に付きまといます。
事前に変数を初期化する定義を加えるか、
$x = array();
if (...) { $x[] = 42; }
foreach ($x as $i) { ...
変数が定義されているかの判定を加えましょう
if (...) { $x[] = 42; }
if (isset($x)) foreach ($x as $i) { ...
回答ありがとうございます!
>事前に変数を初期化する定義を加えるか、
$x = array();
if (...) { $x[] = 42; }
foreach ($x as $i) { ...
変数が定義されているかの判定を加えましょう
if (...) { $x[] = 42; }
if (isset($x)) foreach ($x as $i) { ...
この文の意味を理解した上で参考にさせていただきます。
頑張ってみます!ありがとうございました!
No.4
- 回答日時:
前段の処理で、クエリが間違っていたり、そもそも処理が間違っていたりして、$rowsに値を代入している箇所で、正しく値を代入できていないんでしょうね。
回答ありがとうございます。
$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);
$errors = array();
if($statement->execute()){
//レコード件数取得
$row_count = $statement->rowCount();
while($row = $statement->fetch()){
$rows[] = $row; ←ここですか??
}
}else{
$errors['error'] = "検索失敗しました。";
}
No.2
- 回答日時:
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPでネットワークドライブのop...
-
PHPにて外部サイト内容が取得不...
-
フォントの色を変えるには?
-
パースエラーとは?
-
phpのエラー(T_LNUMBER)について
-
PHPとPostgreSQL接続 (スキーマ)
-
セッション変数に対するエラー表示
-
error_reporting(0);にも関わら...
-
PHP8を使うと、大量のWarningが...
-
「@$変数」の「@の意味は?」
-
ある条件に当てはまったときに...
-
FTPコマンドでディレクトリごと...
-
Subversionのリポジトリの削除
-
PHPのif文でその処理を途中で抜...
-
mysql複数レコードをまとめて削...
-
【file_exists】ファイルが存在...
-
$_SESSION 有効期限をブラウザ...
-
phpのクラスにて別ファイルの変...
-
phpのftp_get()でエラーが出ます。
-
「クラス関数」「メンバ関数」...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォントの色を変えるには?
-
PHPでネットワークドライブのop...
-
トランザクションが原因?DBに...
-
PHPでfatal errorが出ても無視...
-
PHP8を使うと、大量のWarningが...
-
「@$変数」の「@の意味は?」
-
PHPで、エラーがない場合のみ画...
-
関数の引数に未定義の変数を渡...
-
PHPにて外部サイト内容が取得不...
-
php7のhtmlentitiesはEUC-JPを...
-
phpのエラー(T_LNUMBER)について
-
SELECTの値を保持する
-
@fileとは
-
\\x00 でエラー
-
ある条件に当てはまったときに...
-
bindValueエラー
-
error_reporting(0);にも関わら...
-
パースエラーとは?
-
require_once で読み込まれたか?
-
Localeクラスについて
おすすめ情報
//レコード件数取得
$row_count = $statement->rowCount();
while($row = $statement->fetch()){
$rows[] = $row; ←これが間違ってますか?
}
}else{
$errors['error'] = "検索失敗しました。";
}
//データベース接続切断
$dbh = null;
}
}catch (PDOException $e){
print('error:'.$e->getMessage());
$errors['error'] = "データベース接続失敗しました。";
}
?>
くんこばさん、naktakさん、Ogre7077さん、
回答をいただき大変ありがとうございました!親身になって教えていただき感謝しております。
すべての方をベストアンサーにしたいのですが、くんこばさん、naktakさんの助言とOgre7077さんの解説文を参考にし勉強させていただきます。
ありがとうございました。