• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:phpでMysqlに接続し掲示板を作りたいのですが)

phpでMysqlに接続し掲示板を作りたいのですが質問させて頂きます。

このQ&Aのポイント
  • phpでMySQLに接続し、掲示板を作成するための方法を教えてください。
  • MySQLに接続して掲示板を作る方法を教えてください。
  • phpを使用してMySQLに接続し、掲示板を作成しようとしています。しかし、うまく動作しません。どこが間違っているのか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • kaz33
  • ベストアンサー率60% (20/33)
回答No.1

$stmt->execute(array($_GET["name"],$_GET["body"],time())); ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ $db->execute($stmt, array($_GET["name"],$_GET["body"],time())); これでどうですか?

takayoshi-i
質問者

お礼

お返事が遅くなってしまいました。 お知恵を頂きありがとうございます★ しかし、動きませんでした(^^; でも回答をくれたのはアナタだけでした。 非常に嬉しかったです。 コレを機に、本を丸写しするのではなく、自分で考えてプログラムを組み立てる事に専念しようと決心できました。 こんな質問の為にお時間を使って頂き感謝いたします。 ありがとうございました(^^)

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • !助けて!ZAMPP使用のPHP/MySQLエラー

    ZAMPPを使用しPHP/MYSQLの勉強をし始めた者です。以下のエラーが出て先に進めません。どこが悪いのか教えてください。 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\xampp\htdocs\todo.php on line 33 Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\xampp\htdocs\todo.php on line 33 問題のプログラムです。 <?php //---------------------------------------------------------------------- //TODO管理プログラム //---------------------------------------------------------------------- $db_dns = "mysql:host=localhost;dbname=phptest;"; $user = "root"; $pass = ""; //-------SQL $create_query = <<<______ CREATE TABLE items( todo_id INTEGER PRIMARY KEY AUTO_INCREMENT, memo TEXT, flag TEXT, ctime INTEGER); ______; //----------------------------------------------------------------------- //データベースの初期化 $db = new PDO($db_dns,$user,$pass); //データベースが利用できるか確認 $select_stmt = $db->query("SELECT*FROM items LIMIT1"); if(!$select_stmt){//テーブが作成されていない場合 $db->exec($create_query); $now = time(); $db->exec("INSERT INTO items(memo,flag,ctime)". "VALUES('データの初期化','done',$now)"); } //------------------------------------------------------------------------ //TODOを追加する if(isset($_GET['newitem']) && $_GET['newitem'] != ""){ $memo = mysql_real_escape_string($_GET['newitem']); $now = time(); $db->exec("INSERT INTO items(memo,flag,ctime)". "VALUES('$memo','new',$now)"); } //TODOを消化する $to_id = intval($_GET['done']); if ($todo_id > 0){ $db->exec("UPDATE items SET flag='done'". "WHERE todo_id=$todo_id"); } //----------------------------------------------------------------------------- //現在のTODOを表示するHTML $list = ""; //未消化のTODOを抽出 $sql="SELECT*FROM items WHERE flag='new'ORDER BY ctime DESC"; $r = $db->query($sql); foreach ($r->fetchALL() as $row){ $todo_id = $row["todo_id"]; $memo = htmlspecialchars($row["memo"]); $ctime = date("Y-m-d",$row["ctime"]); $btn = "[<a href = '?done=$todo_id'>x</a>]"; $list .= "<li>$btn $memo ($ctime)</li>"; } //消化済みTODOを最大5件抽出 $sql = "SELECT * FROM items WHERE flag = 'done'". "ORDER BY ctime DESC LIMIT 5"; $r = $db->query($sql); foreach ($r->fetchALL() as $row){ $memo = htmlspecialchars($row["memo"]); $ctime = date("Y-m-d",$row["ctime"]); $list .= "<li><s>$memo ($ctime)</s></li>"; } //------------------------------------------------------------------------------- //以下でHTMLを表示 ?><html><body> <h1>TODO</h1> <?php echo $list ?> <form> <h3>新しいTODO</h3> <input type = "text" name= "newitem"/> <input type ="submit" value="追加"/> </form> </body></html> 本当に困り果てています。賢者の方、知恵をお貸しください。

    • ベストアンサー
    • PHP
  • MySQLとPHP(HTML)の連携について

    送信側では、PHP(HTML)下記のように書きました。 ----------------------------- <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力">   ボタン2:<input type="submit" name="input2" value="入力"> </form> ----------------------------- 受信側(input.php)は下記のように書きました。 ----------------------------- <?php $url = "***.sakura.ne.jp"; $user = "abc"; $pass = "12345"; $db = "sakura_db"; if (isset($_POST["$input"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN"; }elseif (isset($_POST["$input2"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN2"; } //Connect MySQL Server $my_Con = mysql_connect($url,$user,$pass); mysql_query("SET NAMES utf8",$my_Con); if ($my_Con == false){ die("MySQL Server接続に失敗しました。"); } //Connect MySQL DataBase if (!mysql_select_db($db,$my_Con)){ die("MySQL DataBase選択に失敗しました。"); } //MySQL Deta Read $my_Row = mysql_query($sql,$my_Con); if (!$my_Row){ die(mysql_error()); } $a = 1; while ($row = mysql_fetch_array($my_Row) or $a <= 50) { echo ' <p>'; echo ' A'.$a.':<input name="date" type="text" size="4" value="'.$row["a"].'">'; echo ' B'.$a.':<input name="date" type="text" size="4" value="'.$row["b"].'">'; echo ' C'.$a.':<input type="checkbox" name="example"'.check($row["c"]).'>'; echo ' D'.$a.':<input type="checkbox" name="example"'.check($row["d"]).'>'; echo ' </p>'; $a++; } //Close MySQL Server $my_Con = mysql_close($my_Con); if (!$my_Con) { exit("MySQL Server閉じられませんでした。"); } ?> ----------------------------- この状態で送信側のボタンをクリックすると、input.php側では”Query was empty”とエラーがでます。 送信側の2つあるボタンによって表示されるテーブルを変えたいのですが、何が原因なのでしょうか? そもそもSQLの内容をif文での条件分岐は出来ないのでしょうか? 最近PHPを勉強し出した初心者です。 出来れば分かりやすく教えていただけないでしょうか。 よろしくお願い致します!

    • ベストアンサー
    • PHP
  • MySQLで昇順に並べ替え

    MySQL(データベース)で商品名と価格を格納したテーブル(syouhin)があります。商品名のキーワードを入力するフォーム(form.html)とデータを受け取る(kensaku.php)があり、以下のようにデータを表示させています。 <!-- form.html --> <html> <head> <title>商品名と価格</title> </head> <body> <form method="get" action="kensaku.php"> <input type="text" name="name"> <input type="submit" name="submit" value="検索"> </form> </body> </html> //kensaku.php <? $name=$_REQUEST["name"]; $conn = mysql_connect ("localhost", "username", "password") or die ('接続できませんでした'); mysql_select_db ("db",$conn); //クエリ生成 $sql = "select * from syouhin where name like '%$name%'"; $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ echo "<table border='1' cellpadding='0' cellspacing='0'>"; echo "<tr>"; echo "<td>".$row[name]."</td>"; echo "<td>".$row[price]."</td>"; echo "</tr>"; echo "</table>"; } ?> ここから質問なんですが、今結果が表示されているまさにそのページで、並べ替えをしたいのです。よく検索結果の並べ替えで、[価格の安い順に並べる]をクリックすると並び変わるのがありますよね。それと同じ事をしたいのです。 僕が考えた方法は、もう一つのページ(例えば、kensaku_asc.php)を作って、 $sql = "select * from syouhin where name like '%$name%'"; の部分だけを $sql = "select * from syouhin where name like '%$name%' order by price"; に変えて、そのページにリンクさせる。でもその場合、form.htmlから受け取ったデータ(ここでは商品名のキーワード)を引き継ぐという事ができないので、そのあたりのところのヒントをいただければと存じます。よろしくお願いします。

    • 締切済み
    • PHP
  • PHP/MySQL SQLエラーについて。

    PHP/MySQLについての質問です。 当方PHP/MySQLについては初心者で、現在参考書を見ながらWebアプリケーションを作成しています。 いくらやっても成功しない例があるので、どこが間違っているのか、 なぜ成功しないのかご教示願いたいです。 エラー名:SQL実行エラー 要因:不明。SQL文を変えたりしたところ成功したこともあるので(elect id,name,age from input_table 等)SQL文に間違いがあるのか? -------------------input.html------------------------ <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <form action="input.php" method="post"> 名前:<input type="text" name="nm"> 年齢:<input type="text" name="age"> <input type="submit" name="exec" value="登録"> </form> </body> </html> -----------------------input.php---------------------------- <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <?php //DB接続 if(!$con=mysql_connect("localhost","root","********")){ //passwardは正確 echo"接続エラー"; exit; } //DB選択 if(!mysql_select_db("input",$con)){ echo"DB選択エラー"; exit; } $sql = "insert into input_table(name,age) values('$nm',$age)"; if(!$res=mysql_query($sql)){ echo"SQL実行エラー"; //ここでこのエラーが表示されてしまう exit; } echo "登録完了"; mysql_close($con); ?> </body> </html> --------------------database----------------------- create table input_table( id int not null auto_increment, name varchar(20) not null, age int not null, primary key(id) )

    • ベストアンサー
    • PHP
  • php mysqlについて

    初心者です宜しくお願いします。 phpからデータベースを使いたいのですが(mysql)、mysql_query()関数のところで1366エラーが出ます。 半角英数ならエラーは出ません。 プログラムを貼り付けます。どなたかお願いします、説明をもっと書きたいのですが私もあまりわかってないのでどうもすみません。 今やっていることは全てローカルですwindowsを使ってます、文字コードもshift_jisです。phpもmysqlも一台のコンピュータでやっています。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>MySQLへデータを登録</title> </head> <body> DBとの連携テスト結果<br> <?php // DBに接続 if(!$con=mysql_connect("localhost","root","y3kwyuba")){ echo"connect_error"; exit; } // DBを選択 if(!mysql_select_db("test",$con)){ echo"select_db_error"; exit; } //MySQL4.1への対応 //mysql_query("SET NAMES SJIS"); この上の行のコメントをはずすとうまく動くのですが色々調べましたら、この書き方は推奨されないと書いてありました、他に対策はあるのでしょうか? $name = $_POST['nm']; $age = $_POST['age']; // フォームで送られてきたデータでINSERT文を作成 $sql = "insert into t_touroku(name,age) values('$name',$age)"; // SQLを実行 if(!$res=mysql_query($sql,$con)){ echo"query_error"; echo "エラー番号:".mysql_errno(), #エラー番号 "メッセージ:".mysql_error(); #エラーメッセージ exit; } // DBから切断 mysql_close($con); // メッセージ出力 echo"登録完了"; ?> </body> </html> 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHPでの検索機能がうまく動きません

    PHPでの検索機能が動かなくて困っています。 <form>で入力した値を、MySQLのWHEREで条件付けて取り出したいのですがうまくいきません....。 最終的に、 1、formに検索ワードを入力 2、DBから条件にあったレコードを持ってくる 3、持ってきた値を表示 という機能にしたいのですが....。 --- --- --- --- --- --- --- --- --- --- --- --- <?php //データベースに接続 mysql_connect('xxx', 'xxx', 'xxx') or die(mysql_error()); mysql_select_db('xxx'); mysql_query('SET NAMES UTF8'); //フォームで送られてきた条件を元にSELECT文を作成 if (!empty($_POST['nm'])) { $q = $_POST['nm']; $sql = 'select * from test_tb where name like "%$q%"'; $record = mysql_query($sql) or die(mysql_error()); } ?> <html> <body> <form action="" method="post">    名前:<input type="text" name="nm">    <input type="submit" name="exec" value="検索"> </form> <?php while($row = mysql_fetch_assoc($record)): ?> <?php echo $row['id']; ?> <?php echo $row['name']; ?> <?php endwhile ?> </body> </html> --- --- --- --- --- --- --- --- --- --- --- --- エラーは表示されないのですが、結果も表示されません。 さまざまなサイトや他の方の質問、MySQLやPHPの本を参考にしたのですが うまくいかなかったのでご質問させていただきました。 プログラミング初心者の上、はじめての質問で不備があると思いますが、 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mysql データ更新

    一覧画面に更新ボタンを作成しました 更新ボタンを押すとkoushin_input.phpにデータを渡し入力フォームを表示され番号、氏名、住所が選択されたデータが表示されるようにしたいのでが更新ボタンを押しても下記のように出ます string(64) "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`=0" bool(false) データが削除されています ソースコードはtop.php 一覧画面です <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>一覧画面</title> </head> <body> <BLOCKQUOTE> <BR>一覧画面<BR><BR> <?php $con=mysqli_connect("localhost","root","admin","db_test"); if(isset($_GET["del"]) and isset($_GET["id"]) and $_GET["del"]==1){ $id=(int) $_GET["id"]; $result = mysqli_query($con,"DELETE FROM tbl_test where `番号`={$id}"); } // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM tbl_test"); echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "<form action=koushin_input.php method=get>"; echo "<td><input type=submit value=更新></td>"; echo "</form>"; echo "<td><a href=\"".$_SERVER["SCRIPT_NAME"]."?del=1&amp;id=".$row['番号']."\">削除</a></td>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?> <BR><BR><BR> <A HREF="http://localhost/regist.php"> <INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A> </BLOCKQUOTE> </body> </html> 受け取る側 koushin_input.phpです <html> <body> <?php // データベースに接続 if(!$con=mysql_connect("localhost","root","admin")){ echo"接続エラー"; exit; } // データベースを選択 if(!mysql_select_db("db_test",$con)){ echo"データベース選択エラー"; exit; } // SELECT文を実行 $id=(isset($_GET["id"]))?((int) $_GET["id"]):0; $sql = "SELECT `番号`,`氏名`,`住所` FROM tbl_test where `番号`={$id}"; var_dump($sql); if(!$res=mysql_query($sql)){ echo "SQL実行時エラー"; exit; } // データの存在チェック if(!$row=mysql_fetch_array($res)){ $row=mysql_fetch_array($res); var_dump($row); echo "データが削除されています"; exit; } // 入力画面の出力 echo "<form action=koushin.php method=post>"; echo "名前:<input type=text name=NAME value=\"" . $row['氏名'] . "\"> "; echo "住所:<input type=text name=ADDR value=" . $row['住所'] . "> "; echo "<input type=submit value=更新>"; echo "</form>"; // 結果セットの解放 mysql_free_result($res); // データベースから切断 mysql_close($con); ?> </body> </html> どこが原因なんでしょうか?

    • ベストアンサー
    • MySQL
  • PHP&MySQLデータ削除のスクリプトについて

    はじめまして。 PHP、MySQL始めたばかりの初心者です。 この度、自力で解決出来なく、質問させて頂く事にしました。 現在、MySQL入門以前という参考書を見ながらデータベースを作っていました。削除スクリプトで、どうしても躓いておりまして何が原因が分からずじまいです。下記が呼び出しスクリプトです --------------------------ここから--------------------------- <?php extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "検索データが見つかりませんでした。"; exit; } else { while($row = mysql_fetch_array($result)){ echo "<h2> " , $row["title"] , "</h2>"; echo "<p><font size=\"-2\">#", $row["id"] ," ●",$row["tourokubi"] ,"</font></p>\n"; echo "<p><div class=\"hon\">", nl2br($row["honbun"]), "</div></p>"; echo "<div class=\"key\">keywords: ", nl2br($row["keyword"]), "</div>"; $ukid=$row["id"]; echo "<center> <a href=\"j_sakujo1.php?i=$ukid\"><img src=\"sakujobutton.gif\" alt=\"削除ボタン\" border=0></a>  <a href=\"correct.php?i=$ukid\"><img src=\"shuseibutton.gif\" alt=\"修正ボタン\" border=0></a>  </center>"; } } ?> --------------------------ここまで--------------------------- そして削除スクリプトです --------------------------ここから--------------------------- <?php extract($_POST); extract($_GET); mysql_connect('localhost','root','xxxxx'); mysql_select_db('xxxxx'); //MySQLレコード削除 if($kakunin=="確認"){ $sql = "delete from xxxxx where id = '{$id}'"; mysql_query($sql); echo "レコードの削除が完了しました"; exit; } //削除確認のためのフォーム $sql = "select * from xxxxx where id = '{$id}'"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>該当データがありません。</p>"; } else{ while($row = mysql_fetch_array($result)){ echo "<p>このレコードを削除します。</p>"; echo "<form action = \"j_sakujo1.php\" method = \"post\">"; echo "<p>登録日:"; echo $row["tourokubi"]; echo "</p>"; echo "<p>タイトル:"; echo $row["title"]; echo "</p>"; echo "<p>本文:"; echo $row["honbun"]; echo "</p>"; echo "<p>キーワード:"; echo $row["keyword"]; echo "</p>"; echo "<input type = \"hidden\" name = \"ren\" value =\""; echo $row["renban"]; echo "\">"; echo "<p><input type=\"submit\" name=\"kakunin\" value=\"確認\">"; echo "<input type=\"reset\" value=\"リセット\"></p>"; echo "</form>"; } } ?> --------------------------ここまで--------------------------- これで削除ボタンを押すと「該当データがありません。」だけ表示され 登録してあるデータがまったく表示されません。 どこで間違ったのか、どうかご指南お願い致します。

  • MySQL+PHP 掲示板での文字化けについて

    お世話になります。 教えて!内でも同類の質問を多々目にし、一通り目を通したつもりですが、今回自力解決することができなかったため質問しました。 MySQL+PHPで簡易掲示板を設置しました(とりあえず動作確認させたかったので書籍のサンプルです)。 しかし、投稿後の画面が文字化けしてしまいます。 日本語で投稿した場合、全て「????」と表示されます。 データベースへ直接アクセスすると、レコードも「????」で登録されていることから、登録の際の文字コードに問題があるのかと思い色々試したのですが、上手くいきませんでした。 掲示板はform1.htmlで文章を入力後、DBに登録され、sample.phpで値を表示するシンプルなものです。 以下がソースですが、色々修正したため、根本的におかしい箇所もあるかも知れませんが、気になる箇所・解決策などご教示宜しくお願いします。 form1.html ------------------------ <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>form1</title> </head> <body> <form action='sample.php' method='GET'> 題名:<input type="text" name="title" size=60 /> <br/> 要約:<textarea name="abstract" cols=60 rows=2></textarea> <br/> 本文:<textarea name="content" cols=60 rows=10></textarea> <br/><br/> <input type="submit" value="送信"/> </form> </body> </html> ------------------ sample.php ------------------ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>PHP Sample</title> <style> h3{ font-weight:bold; border-style:none none solid solid; border-width:0px 0px 3px 7px; border-color:#0000ff; padding:5px 0px 0px 0px; color:#000066; background-color:#ddddff; width:90%; } h4{ width:90%; margin-left:5%; } p{ border-style:groove groove groove groove; border-width:3px 3px 3px 7px; border-color:#aaaaff; margin-left:5%; padding:5px 5px 5px 5px; color:#000033; background-color:#eeeeff; width:80%; } h6 { text-align:right; width:85%; } </style> </head> <body> <?php $link = mysql_connect("localhost", "root", "root") or exit("接続に失敗しました。"); mysql_select_db("phpdata") or exit("データベースが選択できません。"); if (!isset($_GET["title"])){ showAllMySQLData(NULL); exit; } $title = htmlspecialchars($_GET['title']); $abstract = htmlspecialchars($_GET['abstract']); $content = htmlspecialchars($_GET['content']); $query = "insert into myblog (title,abstract,content,uptime)"; $query .= " values (\"" . $title . "\",\"" . $abstract . "\",\"" . $content . "\",CURDATE())"; $result = mysql_query($query) or exit("クエリーの実行に失敗しました。"); mysql_query('set names utf-8'); showAllMySQLData(NULL); mysql_close($link); function showAllMySQLData($result){ if ($result == NULL){ $result = mysql_query("SELECT * FROM myblog") or exit("SELECTの実行に失敗しました。"); } while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $id = $row['id']; $title = $row['title']; $abstract = $row['abstract']; $content = $row['content']; $content = preg_replace("/\r\n/","<br/>",$content); $uptime = date('Y年 m月 d日',strtotime($row['uptime'])); echo "<h3>" . $title . " <font size=-1>[" . $id . "]</font></h3>"; echo "<h4>" . $abstract . "</h4>"; echo "<p>" . $content . "</p>"; echo "<h6>" . $uptime . "</h6>"; echo "<br/><br/>"; } } ?> </body> </html>

    • 締切済み
    • PHP
  • MySQLでGETで2件同じものが登録されてしまいます

    PHP、MySQLとも初心者で、お世話になっています。 <form name="~" method="GET" action="~.php"> 入力1<input type="text" name="na1"><br> 入力2<input type="text" name="na2"><br> <input type="submit" value="送信"> </form> で送信し、PHP側で $tem1=$_GET["na1"]; $tem2=$_GET["na2"]; mysql_select_db("~"); mysql_query("insert into tb1 values (\"$tem1\",\"$tem2\")"); とすると、結果的に同じデータが2件登録されてしまいます。 何が問題なのでしょうか。 教えていただけるとありがたいのですが。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP