突如!接続エラー!?php
- 突如発生した接続エラーについて、phpファイルの内容をご確認ください。
- phpファイル内の特定のコードにより、接続エラーが発生している可能性があります。
- 接続エラーが発生した原因を特定し、正常な状態に修正する方法をご案内します。
- ベストアンサー
突如!接続エラー!?php
いつもお世話になりありがとうございます。 標記の件。 下記のエラーがlocalhost/index.php/で出ました。 接続失敗SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo for $host failed: ���̂悤�ȃz�X�g�͕s���ł��B 大変恐縮ではございますが、下記のコードを吟味して頂けないでしょうか? 度々申し訳ございません。 宜しくお願い申し上げます。 記 index.php <?php require_once ('blog.php'); $blog = new Blog(); $blogData = $blog->getAll(); function h($s){ return htmlspecialchars($s, ENT_QUOTES,"UTF-8"); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ブログ一覧</title> </head> <body> <h2>ブログ一覧</h2> <p><a href="/form.html">新規作成</a></p> <table> <tr> <th>タイトル</th> <th>カテゴリー</th> <th>投稿日時</th> <tr> <?php foreach ($blogData as $column): ?> <tr> <td><?php echo h($column['title']) ?></td> <td><?php echo h($blog->setCategoryName($column['category'])) ?></td> <td><?php echo h($column['post_at']) ?></td> <td><a href="/detail.php?id=<?php echo $column['id'] ?>">詳細</a></td> <td><a href="/update_form.php?id=<?php echo $column['id'] ?>">編集</a></td> <td><a href="/blog_delete.php?id=<?php echo $column['id'] ?>">削除</a></td> </tr> <?php endforeach; ?> </body> </html> env.php <?php define('DB_HOST','localhost'); define('DB_NAME','blog_app'); define('DB_USER','blog_user'); define('DB_PASS','**********'); ?> dbc.php <?php require_once('env.php'); class Dbc { protected $table_name; protected function dbConnect() { $host = DB_HOST; $dbname = DB_NAME; $user = DB_USER; $pass = DB_PASS; $dsn = 'mysql:host=$host;dbname=$dbname;blog_app;charset=utf8'; try { $dbh = new \PDO($dsn, $user, $pass, [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗' . $e->getMessage(); exit(); }; return $dbh; } public function getAll() { $dbh = $this->dbConnect(); //①SQLの準備 $sql = "SELECT * FROM $this->table_name"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(\PDO::FETCH_ASSOC); return $result; $dbh = null; } public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function getById($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); $sql = "SELECT * FROM $this->table_name"; $stmt = $dbh->prepare("SELECT * FROM $this->table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(\PDO::FETCH_ASSOC); if (!$result) { exit('本文がありません。'); } return $result; } public function delete($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); $stmt = $dbh->prepare("DELETE FROM $this->table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); $stmt->execute(); echo 'ブログを削除しました!'; return $result; } } ?> <p><a href="/">戻る</a></p> 大変、お手数をおかけします。 どうか教えてください。 宜しくお願い申し上げます。
- kouzou250
- お礼率61% (126/206)
- PHP
- 回答数4
- ありがとう数4
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>チョット、ご回答の意味が解りません。 回答は貼っておいたので、どうぞ。 >どうやって調べるのですか? エラーコードとエラー文字列で、調べればOKです。 ひとまず、今日は呑みすぎたので。 おしまいにて。 とりあえず、酒飲んでフラフラで、 原因がわからなくても、なんかソースに問題があるな? ってのを感じ取れるように! ソース見て、気持ち悪いな~なんかバグあるんじゃね? って感覚が沸くように、がんばって!
その他の回答 (3)
- AsarKingChang
- ベストアンサー率46% (3467/7472)
とりあえず、酒飲みすぎて、ゲロゲロモードなので、 もう1発 env.php <?php define('DB_HOST','localhost'); これ、意味がない! やるなら、 final class 何らかの名前 { public const ID = "なんか"; public const PASSWORD = "なんか"; public const DATABASE = "なんか"; として、取り込みの時、 これは、static リンケージとして、 何らかの名前::DATABASE みたいに、スコープ分離したほうがましです。 protected function dbConnect() { $host = DB_HOST; $dbname = DB_NAME; $user = DB_USER; $pass = DB_PASS; $dsn = 'mysql:host=$host;dbname=$dbname;blog_app;charset=utf8'; $hostの展開に失敗してる状況(直し方はさっき書いた) だが、その前にそもそも、 $hostを他で使ってないなら、メモリの無駄使いですね。 "abc".$変数."def";でドットチェーンを使う方がマシです。 じゃないと、変数を作ると同時にガベージコレクターに食われます。 ドットチェーンの場合は、先ほどの 何らかの名前::DATABASE これもそのまま書けますので、メモリ量0で 同じことができますよ。 当然、staticリンケージなので、バグが限りなく出にくい! これらは、基本中の基本です。 (ただ、defineもスタティックの分類ですが、 こいつにはスコープがないので、全体が同じ値を シェアしてしまう問題があり、その分のメモリを無駄にします) 学校行くのでもいいですし、わかる人に教えてもらってもいいし。 少なくとも、覚えるところからを 「強くお勧めします」(かなり強いニュアンスで) 全部が全部、シンタックスエラーなので。
お礼
ご回答誠にありがとうございます。 すみません。 これもご回答の意味が解りません。 ボクはお酒飲み過ぎで大失敗してますので、辞めました。 お酒、旨いですよね。 羨ましいです。 でも、飲み過ぎ注意です! 学校行くお金がないのです!
- AsarKingChang
- ベストアンサー率46% (3467/7472)
一応答えも書いておきますが。 これ、基本を覚えるのを無視してる結果です。 それと、しつこいようだけど、 頼むからまともなエディター使って! こんな低レベルな問題、エディターが直してくれるレベルの話です。
お礼
ご回答誠にありがとうございます。 まともなエディターはどうやって 入手できますか? xdebugの入手は難しくて、できませんでした。 まともなエディターはどうやって 入手できますか? 難しいですか??? どうかお教えください。 宜しくお願い申し上げます。
- AsarKingChang
- ベストアンサー率46% (3467/7472)
やれやれ。。。 ひとまず、 https://アドレス/yutarou/items/9cc90e0a0c3eec51e510 アドレスの所に、これで qiita . com このアドレスは、OKWAVEのブラックリストドメインなので、 置き換えて。 ほれ、後はじっくり読んで! (この程度の事は自分で調べようぜぇ~)
お礼
ご回答誠にありがとうございます。 チョット、ご回答の意味が解りません。 申し訳ございません。 どうやって調べるのですか? 教えてください。 宜しくお願い申し上げます。
補足
コーディングを直してくれる 夢のようなエディターをボクも欲しいです。 入手方法を教えて下さい。 どうぞ宜しくお願い申し上げます。
関連するQ&A
- php html 混在 htmlに異常なエラー??
いつも大変お世話になり誠にありがとうございます。 標記の件。 PhpStormにphpとhtmlを混在させると、htmlにエラー警告が イッパイ出ます。異常です。 添付の通り、正規にやっているのにhtmlにエラー警告が イッパイ出ます。 実際にはエラーじゃないのに、実行するとエラーになりました。 おかしいです。 これを回避するにはどうしたらよいでしょうか? 度々申し訳ございません。 教えてください。 宜しくお願い申し上げます。 記 <?php $dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8'; $user = 'blog_user'; $pass = 'rhythm0!KT'; try { $dbh = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); //echo '接続成功'; //①SQLの準備 $sql = "SELECT * FROM blog"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(PDO::FETCH_ASSOC); var_dump($result); $dbh = null; }catch(PDOException $e) { echo '接続失敗'.$e->getMessage(); exit(); } <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ブログ一覧</title> </head> <body> <h2>ブログ一覧</h2> <table> <tr> <th>タイトル</th> <th>カテゴリー</th> <tr> <?php foreach ($result as $column):?> <tr> <td><?php echo $column['id'] ?></td> <td><?php echo $column['title'] ?></td> <td><?php echo $column['category'] ?></td> <?php endforeach; ?> </tr> </body>
- ベストアンサー
- その他(プログラミング・開発)
- php どこが間違っているんでしょうか?
いつも大変お世話になり誠にありがとうございます。 標記の件。 27行目のfunction getAllBlog() { にParse error: syntax error, unexpected token "function", expecting ";" in C:\xampp\htdocs\dbc.php on line 27 と出ます。 一体、どこが間違っているのでしょうか? ご回答のほど宜しくお願い申し上げます。 記 <?php //関数1つに1つの機能のみ持たせる //データベース接続 //データを取得する //1.データベース接続 //引数:なし //返り値:接続結果を返す function dbConnect() { $dsn = 'mysql:host=localhost;dbname=blog;charset=utf8'; $user ='blog_user'; $pass ='**********'; try { $dbh = new PDO($dsn,$user,$pass,[ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗'; $e->getMessage(); exit(); }; return $dbh // 2.データを取得する //引数:なし //返り値:取得したデータ function getAllBlog() { $dbh = dbConnect(); //⓵SQLの準備 $sql = 'SELECT * FROM blog'; //⓶SQLの実行 $stmt = $dbh->query($sql); //⓷SQLの結果を受け取る $result = $stmt-> fetchall(PDO::FETCH_ASSOC); return $result; $dbh = null; } //取得したデータを表示 $blogData = getAllBlog(); ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ブログ一覧</title> </head> <body> <h2>ブログ一覧</h2> <table> <tr> <th>No.</th> <th>お名前</th> <th>カテゴリー</th> </tr> <?php foreach($blogData as $column): ?> <tr> <td><?php echo $column['id']?></td> <td><?php echo $column['name']?></td> <td><?php echo $column['category']?></td> </tr> <?php endforeach; ?> </table> </body> </html>
- ベストアンサー
- PHP
- php 66行目の関数に矛盾???
いつも大変お世話になり誠にありがとうございます。 標記の件。 たくさんファイルがあるので、他の箇所に 問題があるのかもしれません。 エラーメッセージは Fatal error: Cannot redeclare Dbc::getBlog() in C:\xampp\htdocs\dbc.php on line 66 です。 度々申し訳ございません。 アドバイスを宜しくお願い申し上げます。 記 <?php require_once('env.php'); Class Dbc { protected $table_name; //1.データベース接続 //引数:なし //返り値:接続結果を返す protected function dbConnect() { $host = DB_HOST; $dbname = DB_NAME; $user = DB_USER; $pass = DB_PASS; $dsn = "mysql:host = $host;dbname = $dbname;charset=utf8"; try { $dbh = new \PDO($dsn,$user,$pass,[ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗'; $e->getMessage(); exit(); }; return $dbh; } //カテゴリー名を表示 //引数:数字 //返り値:カテゴリーの文字列 function setCategoryName($category) { if ($category == '1') { return '日常'; }elseif ($category == '2') { return '非日常'; }else{ return 'その他'; } } //引数:id //返り値:$result public function getBlog($id) { if(empty($id)) { exit('idが不正です。'); } } public function getAllBlog() { $dbh = $this->dbConnect(); //⓵SQLの準備 $stmt = $dbh->prepare('SELECT * FROM blog Where id = :id'); $stmt->bindValue(':id',(int)$id, \PDO::PARAM_INT); //⓶SQLの実行 $stmt->execute(); //⓷SQLの結果を受け取る $result = $stmt-> fetchall(\PDO::FETCH_ASSOC); if(!$result) { exit('本文がありません。'); } return $result; $dbh = null; } //引数:$id //返り値:$result public function getBlog($id) { ★ここが66行目です。 if(empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); //SQL準備 $stmt = $dbh->prepare('SELECT * FROM blog Where id = :id'); $stmt->bindValue(':id',(int)$id, \PDO::PARAM_INT); //SQL実行 $stmt->execute(); //結果を取得 $result = $stmt->fetch(\PDO::FETCH_ASSOC); if(!$result) { exit('本文がありません。'); } } //return $result; } function delete($id) { exit('idが不正です。'); } return $result;
- ベストアンサー
- PHP
- this->何故?エラー???
いつもお世話になりありがとうございます。 標記の件。 26行目がどうしてもエラーになります。 エラーメッセージは Fatal error: Uncaught Error: Undefined constant "this" in C:\xampp\htdocs\dbc.php:26 Stack trace: #0 C:\xampp\htdocs\index.php(4): Dbc->getAll() #1 {main} thrown in C:\xampp\htdocs\dbc.php on line 26 です。 度々申し訳ございません。 アドバイスの程、宜しくお願い申し上げます。 記 <?php class Dbc { protected $table_name; private function dbConnect() { $dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8'; $user = 'blog_user'; $pass = 'rhythm0!KT'; try { $dbh = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗' . $e->getMessage(); exit(); }; return $dbh; } public function getAll() { $dbh = this->dbConnect(); ★ここが26行目 //①SQLの準備 $sql = "SELECT * FROM this->$table_name"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(PDO::FETCH_ASSOC); return $result; $dbh = null; } public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function getById($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = this->dbConnect(); $stmt = $dbh->prepare("SELECT * FROM this->$table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if (!$result) { exit('本文がありません。'); } return $result; } public function blogCreate($blogs) { $sql = 'INSERT INTO blog(title, content, category, publish_status) VALUES (:title, :content, :category, :publish_status)'; $dbh = this->dbConnect(); $dbh->biginTransaction; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->execute(); $dbh->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } } ?>
- ベストアンサー
- PHP
- SELECT文でエラー???何故でしょうか???
いつも大変お世話になり誠にありがとうございます。 標記の件。 ファイルが多いので、他の箇所に誤りがあるかもしれません。 エラーメッセージは Fatal error: Uncaught Error: Object of class Blog could not be converted to string in C:\xampp\htdocs\dbc.php:55 Stack trace: #0 C:\xampp\htdocs\detail.php(4): Dbc->getById('1') #1 {main} thrown in C:\xampp\htdocs\dbc.php on line 55 です。 度々申し訳ございません。 アドバイスの程、宜しくお願い申し上げます。 記 <?php class Dbc { protected $table_name; protected function dbConnect() { $dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8'; $user = 'blog_user'; $pass = 'rhythm0!KT'; try { $dbh = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗' . $e->getMessage(); exit(); }; return $dbh; } public function getAll() { $dbh = $this->dbConnect(); //①SQLの準備 $sql = "SELECT * FROM $this->table_name"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(PDO::FETCH_ASSOC); return $result; $dbh = null; } public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function getById($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); $stmt = $dbh->prepare("SELECT * FROM $this->$table_name Where id = :id"); ★ここが55行目です! $stmt->bindValue(':id', (int)$id, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if (!$result) { exit('本文がありません。'); } return $result; } public function blogCreate($blogs) { $sql = 'INSERT INTO blog(title, content, category, publish_status) VALUES (:title, :content, :category, :publish_status)'; $dbh = $this->dbConnect(); $dbh->biginTransaction; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->execute(); $dbh->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } } ?>
- ベストアンサー
- PHP
- $dbh = dbConnect();
いつもお世話になりありがとうございます。 標記の件。 エラーになります。 どう直せばいいでしょうか? エラーメッセージは Fatal error: Uncaught Error: Call to undefined function dbConnect() in C:\xampp\htdocs\blog_create.php:9 Stack trace: #0 {main} thrown in C:\xampp\htdocs\blog_create.php on line 9 です。 コーディングは下記です。 <?php //require_once('form.html'); require_once('blog.php'); $sql = "INSERT INTO table_name(name,title,category,content) VALUES (:name, :title, :category, :content,)"; $dbh = dbConnect(); $dbh->beginTransaction(); try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT); $stmt->bindValue(':name', $blogs['name'], PDO::PARAM_STR); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':post_at', $blogs['post_at'], PDO::PARAM_INT); $stmt->execute(); $stmt->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } blog.php <?php //require_once('dbc.php'); //<?php //class Dbc //{ // protected $table_name; //protected function dbConnect() //{ $dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8'; $user = 'blog_user'; $pass = 'rhythm0!KT'; try { $dbh = new \PDO($dsn, $user, $pass, [ \PDO::ATTR_ERRMODE => \PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗' . $e->getMessage(); exit(); }; return $dbh; //} function getAll() { $dbh = $this->dbConnect(); //①SQLの準備 $sql = "SELECT * FROM $this->table_name"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(\PDO::FETCH_ASSOC); return $result; $dbh = null; } $dbh = $this->dbConnect(); $sql = "SELECT * FROM $this->table_name"; $stmt = $dbh->prepare("SELECT * FROM $this->table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(\PDO::FETCH_ASSOC); if (!$result) { exit('本文がありません。'); } return $result; //} //function blogCreate($blogs) { $sql = 'INSERT INTO blog(title, content, category, publish_status) VALUES (:title, :content, :category, :publish_status)'; $dbh = $this->dbConnect(); $dbh->biginTransaction; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], \PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], \PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], \PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], \PDO::PARAM_INT); $stmt->execute(); $dbh->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } function delete($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); $stmt = $dbh->prepare("DELETE FROM $this->table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, \PDO::PARAM_INT); $stmt->execute(); echo 'ブログを削除しました!'; return $result; } //} ?> 度々申し訳ございません。 教えてください。 ご回答のほど宜しくお願い申し上げます。
- ベストアンサー
- PHP
- PHPとMySQL 検索フォームを作りたい。
PHPとMySQLを使って商品一覧を作りました。 ◆商品一覧表 http://pips.chu.jp/0/07/index.php <?php function connect() { return new PDO("mysql:dbname=★.★","★","★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM shohin"); $shohin = $st->fetchAll(); ?> <TABLE border="1"> <tr> <th>商品番号</th> <th>商品名</th> <th>分類</th> <th>販売単価</th> <th>仕入単価</th> <th>登録日</th> </tr> <?php foreach ($shohin as $g) { ?> <tr> <td><?php echo $g['id'] ?></td> <td><?php echo $g['name'] ?></td> <td><?php echo $g['bunrui'] ?></td> <td class="td-price"><?php echo number_format ($g['htanka']) ?></td> <td class="td-price"><?php echo number_format ($g['stanka'])?></td> <td><?php echo $g['day'] ?></td> </tr> <?php } ?> </TABLE> ◆特定の商品一覧表 http://pips.chu.jp/0/07/irui.php ↓ $st = $pdo->query("SELECT * FROM shohin");の部分を $st = $pdo->query("SELECT * FROM shohin WHERE bunrui='衣類' ");に変更すると 分類が衣類だけの表になります。 ◆入力フォーム http://pips.chu.jp/0/07/form.php ↓ <form action = "kensaku.php" method="post"> 分類:<input type="text" name="bunrui"> <input type="submit" name="submit" value="検索"> </form> こんな感じの入力フォームを作り、分類名を入力すると、その分類名の一覧表に反映されるようにしたいです。 ◆検索された一覧表 http://pips.chu.jp/0/07/kensaku.php ↓ <?php function connect() { return new PDO("mysql:dbname=★.★","★","★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM shohin WHERE bunrui='?' "); $shohin = $st->fetchAll(); ?> <TABLE border="1"> <tr> <th>商品番号</th> <th>商品名</th> <th>分類</th> <th>販売単価</th> <th>仕入単価</th> <th>登録日</th> </tr> <?php foreach ($shohin as $g) { ?> <tr> <td><?php echo $g['id'] ?></td> <td><?php echo $g['name'] ?></td> <td><?php echo $g['bunrui'] ?></td> <td class="td-price"><?php echo number_format ($g['htanka']) ?></td> <td class="td-price"><?php echo number_format ($g['stanka'])?></td> <td><?php echo $g['day'] ?></td> </tr> <?php } ?> </TABLE> 「入力フォーム」と「検索された一覧表」のソースの書き方がわかりません。 どのようにけば実現するでしょうか。 まだ初心者なので、本やサイトを調べながら見よう見まねでやっています。 具体的に、どの部分を書き換えればよいか教えていただければ有難いです。 よろしくお願いします。
- ベストアンサー
- SE・インフラ・Webエンジニア
- ブログサイト。2つのソースコードをご覧ください。
いつも大変お世話になり誠にありがとうございます。 標記の件。 YouTubeを参考にブログサイトに挑戦しております。 YouTubeの説明がレベルが高く、またファイルの遷移が早いので、 私自身、訳解らなくなっています。 必死に転記しました。 しかし、どうしてもエラーが出ます。 もうギブアップしようかなと思いましたが、ぶしつけな質問ですが、皆様に教えを乞うと思いました。 参考サイトを勉強しましたがあまり役に立たないと思いました。 2つのファイルのソースコードを提示します。 また添付はそこから詳細をクリックすると次のように エラーになります。 Fatal error: Uncaught Error: Object of class Blog could not be converted to string in C:\xampp\htdocs\dbc.php:55 Stack trace: #0 C:\xampp\htdocs\detail.php(4): Dbc->getById('1') #1 {main} thrown in C:\xampp\htdocs\dbc.php on line 55 記 dbc.php <?php class Dbc { protected $table_name; protected function dbConnect() { $dsn = 'mysql:host=localhost;dbname=blog_app;charset=utf8'; $user = 'blog_user'; $pass = '**********'; try { $dbh = new PDO($dsn, $user, $pass, [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, ]); } catch (PDOException $e) { echo '接続失敗' . $e->getMessage(); exit(); }; return $dbh; } public function getAll() { $dbh = $this->dbConnect(); //①SQLの準備 $sql = "SELECT * FROM $this->table_name"; //②SQLの実行 $stmt = $dbh->query($sql); //③SQLの結果を受け取る $result = $stmt->fetchall(PDO::FETCH_ASSOC); return $result; $dbh = null; } public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function getById($id) { if (empty($id)) { exit('idが不正です。'); } $dbh = $this->dbConnect(); $stmt = $dbh->prepare("SELECT * FROM $this->$table_name Where id = :id"); $stmt->bindValue(':id', (int)$id, PDO::PARAM_INT); $stmt->execute(); $result = $stmt->fetch(PDO::FETCH_ASSOC); if (!$result) { exit('本文がありません。'); } return $result; } public function blogCreate($blogs) { $sql = 'INSERT INTO blog(title, content, category, publish_status) VALUES (:title, :content, :category, :publish_status)'; $dbh = $this->dbConnect(); $dbh->biginTransaction; try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->execute(); $dbh->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } } ?> detail.php <?php require_once('blog.php'); $blog = new Blog(); $result = $blog->getById($_GET['id']); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>ブログ詳細</title> </head> <body> <h2>ブログ詳細</h2> <h3>タイトル:<?php echo $result['title'] ?> </h3> <p>投稿日時:<?php echo $result['post_at'] ?></p> <p>カテゴリー:<?php echo $blog->setCategoryName($result['category']) ?></p> <hr> <p>本文:<?php echo $result['content'] ?></p> </body> </html> 誠に恐れ入ります。 アドバイスの程、宜しくお願い申し上げます。
- ベストアンサー
- PHP
- コードの終端にエラー???php
いつもお世話になり誠にありがとうございます。 標記の件。 エラーメッセージは次です。 ( ! ) Parse error: syntax error, unexpected end of file in /srv/www/htdocs/blog.php on line 98 コードは97行になります。 どうか教えてください。 アドバイスを宜しくお願い申し上げます。 記 <?php require_once('dbc.php'); class Blog extends Dbc { protected $table_name = 'blog'; //カテゴリー名を表示 //引数:数字 //返り値:カテゴリーの文字列 public function setCategoryName($category) { if ($category == '1') { return '日常'; } elseif ($category == '2') { return '非日常'; } else { return 'その他'; } } public function blogCreate($blogs) { $sql = "INSERT INTO blog(title,content,category,publish_status) VALUES (:title, :content, :category, :publish_status)"; $dbh = $this->dbConnect(); $dbh->biginTransaction(); try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT); $stmt->execute(); $stmt->commit(); echo 'ブログを投稿しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } function blogUpdate($blogs) { $sql = "UPDATE $this->table_name SET title = :title, content = :content, category = :category, publish_status = :publish_status Where id = :id"; $dbh = dbConnect(); $dbh->biginTransaction(); try { $stmt = $dbh->prepare($sql); $stmt->bindValue(':title', $blogs['title'], PDO::PARAM_STR); $stmt->bindValue(':content', $blogs['content'], PDO::PARAM_STR); $stmt->bindValue(':category', $blogs['category'], PDO::PARAM_INT); $stmt->bindValue(':publish_status', $blogs['publish_status'], PDO::PARAM_INT); $stmt->bindValue(':id', $blogs['id'], PDO::PARAM_INT); $stmt->execute(); $stmt->commit(); echo 'ブログを更新しました!'; } catch (PDOException $e) { $dbh->rollBack(); exit($e); } } function blogUpdate($blogs){ } //ブログのバリデーション function blogValidate($blogs) { if (empty($blogs['title'])) { exit('タイトルを入力してください。'); } if (mb_strlen($blogs['title']) > 191) { exit('タイトルは191文字以下にしてください。'); } if (empty($blogs['content'])) { exit('本文を入力してください。'); } if (empty($blogs['category'])) { exit('カテゴリーは必須です。'); } if (empty($blogs['publish_status'])) { exit('公開ステータスは必須です。'); } } ?>
- ベストアンサー
- PHP
- PHP(prepareについて)
html(fromタグ)→php(fromの受取)→db(データベース)→php(出力) ということをやりたいのです。htmlからの送信はできているのですが、 エラーがphp文の中にあるexecute();メゾッド部分に起こります。どうすれば直りますか? PHP <?php try{ $dbh=new PDO("mysql:dbname=blog;host=localhost","root",""); $sth=$dbh->prepare("select * from id where id=:id"); $sth=$sth->bindValue(":id",2,PDO::PARAM_STR); $sth=$sth->execute(); $result=$sth->fetchALL(); print_r($result); }catch(Exception $e){echo $e->getMessage();} ?>
- ベストアンサー
- PHP
お礼
ご回答誠にありがとうございます。 添付の答えも意味が解りません。 でも、見放さないでください。 感謝しております。 明日、また教えてください。 飲み過ぎ注意で!!! それでは、おやすみなさいませ。