include関数を使用したSELECT文とPHPの連携について
- PHPのinclude関数を使用して外部のPHPファイルからテーブル名を取得し、SELECT文と連携することは可能です。
- しかし、include関数を使用する際には外部ファイルの拡張子が.phpである必要があります。
- また、include関数はファイルの内容をそのまま展開するため、SELECT文のクエリ内でinclude関数を使用することはできません。
- ベストアンサー
SELECT文をinclude(SQLとPHP)
SQLのデータを呼び出すときに <?php function connect() { return new PDO("mysql:dbname=★★★★★;host=★★★★★","★★★★★","★★★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM table-name"); $word = $st->fetchAll(); ?> としています。 ここで、テーブル名(ここでは「table-name」)を外部のphpからincludeすることは可能でしょうか? 試したのは、 table-name という内容のphpを 「table.php」というファイル名で同じディレクトリ内に保存。 <?php function connect() { return new PDO("mysql:dbname=★★★★★;host=★★★★★","★★★★★","★★★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM {<?php include('table.php'); ?>}"); $word = $st->fetchAll(); ?> としたのですが、反応しませんでした。 そもそもこのようなことが可能かどうかもわかりません。 良い方法がありましたら、ご指導ください。
- pino1961
- お礼率80% (24/30)
- PHP
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
table.php を、下記のように記述してください。 <?php $table_name = '参照したいテーブル名'; ?> その上で、SQLを呼び出すphpに下記記述を追加して下さい。 function connect() { require 'table.php'; // この行を追加 最後に、テーブル名の指定を変数にして下さい。 $st = $pdo->query("SELECT * FROM {$table_name}");
関連するQ&A
- SELECT文をinclude(SQLとPHP)2
SQLのデータを呼び出すときに <?php function connect() { return new PDO("mysql:dbname=★★★★★;host=★★★★★","★★★★★","★★★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM table-name"); $word = $st->fetchAll(); ?> としています。 ここで、テーブル名(ここでは「table-name」)を外部のphpからincludeすることは可能でしょうか? 試したのは、 table-name という内容のphpを 「table.php」というファイル名で同じディレクトリ内に保存。 <?php function connect() { return new PDO("mysql:dbname=★★★★★;host=★★★★★","★★★★★","★★★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM {<?php include('table.php'); ?>}"); $word = $st->fetchAll(); ?> としたのですが、反応しませんでした。 そもそもこのようなことが可能かどうかもわかりません。 良い方法がありましたら、ご指導ください。
- ベストアンサー
- PHP
- SQLで抽出した数字の合計をPHPで算出
SQLとPHPを使って計算表を作っています。 サンプルとして <?php <?php function connect() { return new PDO("mysql:dbname=★★★★★;host=★★★★★","★★★★★","★★★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } ?> $pdo = connect(); $st = $pdo->query("SELECT * FROM test ORDER BY number"); $number = $st->fetchAll(); ?> <?php foreach ($number as $g) { ?> <?php } ?> で、 http://mottu.link/test/index.php という結果が出てきます。 この数字の合計を一番下に表示したいのですが、どのようにすればよいでしょうか? 何卒よろしくお願いします。
- ベストアンサー
- PHP
- LIKE述語/SQLとPHPを使った検索フォーム
SQLを使って、「名前」(カラム名=name)と「コメント」(カラム名=comment)のテーブルを作りました。 このテーブルに対して、検索フォームを作りました。 このフォームに名前を入力すると、該当する行が検索されるようにしました。 ◆入力フォーム form.php <form action = "kensaku.php" method="post"> 名前:<input type="text" name="name"> <input type="submit" name="submit" value="検索"> </form> ◆検索結果 search.php <?php function connect() { return new PDO("mysql:dbname=★;host=★","★","★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM table WHERE name='" . $_POST["name"] . "' "); $address = $st->fetchAll(); ?> <?php foreach ($table as $g) { ?> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta name="GENERATOR" content="IBM WebSphere Studio Homepage Builder Version 14.0.8.0 for Windows"> <p>名前<?php echo $g['name'] ?></p> <p>コメント<?php echo $g['comment'] ?></p> <?php } ?> ここで、該当する文言の一部でも検索できるようにしたいです。 ※例えば、「山田太郎」を検索する場合に「山」だけでも検索できるように。 LIKEを使えばよいかと思い、 $st = $pdo->query("SELECT * FROM table WHERE name='" . $_POST["name"] . "' ");を $st = $pdo->query("SELECT * FROM table WHERE name LIKE='%" . $_POST["name"] . "%' "); と、記述してみましたがだめでした。 どのように記述すればよいか教えていただけないでしょうか。 何卒お願いします。
- ベストアンサー
- MySQL
- WordPressの独自テーブルへの入力フォーム
WordPressのデータベースに独自のテーブル(wp_abc)を作りました。 カラムは「code(indexです)」「name」と「address」の3つです。 このテーブルにデータを入力するフォームを作りたいです。 これまでWordPressではないSQLへのデータ入力は次のようにしていました。 ●入力画面(insert.php) <?php function connect() { return new PDO("mysql:dbname=xxxxx;host=yyyyy","zzzzz","password", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $error = $name = ''; $pdo = connect(); if (@$_POST['submit']) { $code = $_POST['code']; $name = $_POST['name']; $address = $_POST['address']; if (!$name) $error .= '名前が入力されていません。<br>'; if (!$error) { $pdo->query("INSERT INTO abc(name,address) VALUES('$name','$address')"); header('Location: index.php'); exit(); } } ?> <?php if ($error) echo "<span class=\"error\">$error</span>" ?> <form action="insert.php" method="post"> <table> <tr> <th>名前</th> <td><INPUT type="text" name="name" value="<?php echo $name ?>"></td> <th>住所</th> <td><INPUT type="text" name="address" value="<?php echo $address ?>"></td> </tr> </table> <p><input class="submit" type="submit" name="submit" value="登録"></p> </form> ●管理画面(index.php) <?php function connect() { return new PDO("mysql:dbname=xxxxx;host=yyyyy","zzzzz","password", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM wp_abc"); $abc = $st->fetchAll(); ?> <?php foreach ($abc as $row) { ?> <table> <tr> <th>名前</th> <td><?php echo ($row['name']) ?></td> </tr> <tr> <th>住所</th> <td><?php echo ($row['address']) ?></td> </tr> </table> <?php } ?> ※※※※※ 単純にmysql:dbname=xxxxx;host=yyyyy","zzzzz","password",の部分をWordPressのデータベースのものに置き換えましたが、うまくいきません。 どこが悪いのかご指摘いただければありがたいです。 また、他に正しい方法がありましたら教えていただけないでしょうか。 何卒よろしくお願いします。
- ベストアンサー
- PHP
- チェックボックスで複数選択した値をSQLへ
次のような入力フォームから、SQLのテーブルに登録します。 <?php function connect() { return new PDO("mysql:dbname=★★★;host=★★★","★★★","★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); if (@$_POST['submit']) { $hoge = $_POST['hoge']; if (!$error) { $pdo->query("INSERT INTO ★(hoge) VALUES('$hoge')"); header('Location: example.php'); exit(); } } ?> <form action="insert.php" method="post"> <input type="checkbox" name="hoge[]" value="りんご"/>りんご<br> <input type="checkbox" name="hoge[]" value="みかん" />みかん<br> <input type="checkbox" name="hoge[]" value="いちご" />いちご <input class="submit" type="submit" name="submit" value="登録"> </form> これで、例えば「りんご」と「みかん」をチェックして登録ボタンを押すと 受け取りのexample.phpにはArrayと表示され、SQLに反映されません。 よい方法があったら教えてください。
- ベストアンサー
- PHP
- PDOを使いたい
PHP初心者です PHP 5.2.5 MySQL 5.1.22 PDOでMYSQLに接続するにはどうすればいいのでしょうか? いままではこんな感じでしたがPDOにするとどんな感じになるんですか? $link=mysql_connect('localhost', 'user', 'pass')or die(mysql_error()); mysql_select_db(user'); mysql_query('SET NAMES UTF8'); PDOで接続する方法らしいのですが疑問を持ってしまったので教えてください 質問1 最初の$db_nameや$passなどの変数のとこに直接、localhostと書くのはまずいですか? 質問2 古いMYSQL系はカッコで囲めばいいので簡単だったのですがPDOの記号の意味を教えてください->とか=>です 質問3 PDO::ATTR_EMULATE_PREPARESは指定する必要があるんでしょうか?指定しないとパフォーマンスが下がるんですか?PDO::ATTR_EMULATE_PREPARESとはなんでしょうか? try { $pdo = new PDO("mysql:dbname=$db_name;host=$serv","$user","$pass", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET 'utf8`")); } catch (PDOException $e) { die($e->getMessage()); } よろしくお願いします
- ベストアンサー
- PHP
- DB接続の関数化
下記のデータベースに接続する関数の意味は「MySQLに接続して、PDOクラスで接続したデータベース情報を返す」で合っていますか? function get_db_connect(){ // MySQL用のDSN文字列 $dsn = 'mysql:dbname='. DB_NAME .';host='. DB_HOST .';charset='.DB_CHARSET; try { // データベースに接続する $dbh = new PDO($dsn, DB_USER, DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8mb4')); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $dbh->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch (PDOException $e) { exit('接続できませんでした。理由:'.$e->getMessage() ); } return $dbh; }
- ベストアンサー
- 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エンジニア
- php pdo データベース
前に書き込んだのが状況がわかったので再度書きます update.phpでGETで取った番号のデータを表示します 番号は主キーなので変更できないように表示のみにします update.phpのフォームをuptate2.phpに送ります <?php $ID = htmlspecialchars($_GET['番号']); $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("SELECT * FROM tbl_test WHERE 番号=?"); $st->execute(array($ID)); $row = $st->fetch(); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); ?> <form action="update2.php" method="post"> 番号<br> <?php echo $ID ?><br> <input type="hidden" name="ID" value="<?php echo $ID; ?>"> 氏名<br> <input type="text" SIZE = "50" NAME="NAME" value="<?php echo $NAME ?>"><br> 住所<br> <input type="text" SIZE = "130"NAME="ADDR" value="<?php echo $ADDR ?>"><br> <input type="submit"> </form> アップデ-トphp update2.php <?php $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?"); $st->execute(array($_POST['ID'],$_POST['NAME'], $_POST['ADDR'])); ?> レコードを修正しました。 今の現状 エラーが出ないでレコードを修正しました。と表示されるがレコードが修正されていない どこがいけないと思いますか?
- ベストアンサー
- PHP
- php データベース更新
番号 int プライマリーキー 氏名 varchar 住所 varchar 一覧画面に修正というボタンをつくりボタンクリックすると入っているデータがテキストボックスで表示され入力できるようにした。 番号は主キーなので表示のみにして編集できないようにした ソース GETで番号をとりupdate2.phpにわたす update.php <?php $ID = htmlspecialchars($_GET['番号']); $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("SELECT * FROM tbl_test WHERE 番号=?"); $st->execute(array($ID)); $row = $st->fetch(); $ID = htmlspecialchars($row['番号']); $NAME = htmlspecialchars($row['氏名']); $ADDR = htmlspecialchars($row['住所']); ?> <form action="update2.php" method="post"> 番号<br> <?php echo $ID ?><br> 氏名<br> <input type="text" SIZE = "50" NAME="NAME" value="<?php echo $NAME ?>"><br> 住所<br> <input type="text" SIZE = "130"NAME="ADDR" value="<?php echo $ADDR ?>"><br> <input type="submit"> </form> アップデートphpは下記のとおり update2.php <?php $pdo = new PDO("mysql:dbname=db_test;host=localhost", "root", "admin"); $st = $pdo->prepare("UPDATE tbl_test SET 氏名=?,住所=?WHERE 番号=?"); $st->execute(array($_POST['ID'],$_POST['NAME'], $_POST['ADDR'])); ?> レコードを修正しました。 だかupdate2.phpでエラ-がおきて先に進めません
- ベストアンサー
- PHP
お礼
ご回答ありがとうございます。 こちらの理解力不足でお手数をおかけします。 何卒よろしくお願いします。
補足
ご回答ありがとうございました。 ご指摘に従い、 table.phpを <?php $table_name = 'ここでは「table-name」'; ?> とし、 SQLを呼び出すphpを <?php function connect() { require 'table.php';//ここに追加しました。 return new PDO("mysql:dbname=★★★★★;host=★★★★★","★★★★★","★★★★★", array( PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET `utf8`")); } $pdo = connect(); $st = $pdo->query("SELECT * FROM {$table_name}"); $word = $st->fetchAll(); ?> としましたが、エラーが出てアクセスできませんでした。 require 'table.php';//ここに追加しました。 の位置が悪いのでしょうか。 お手数をおかけして申し訳ありません。 間違っているところをご指摘頂だければ有難いです。 何卒よろしくお願いいたします。