• 締切済み

php+MYSQL

タイトル 本文 書き込み後保存を押すと 下に書き込み保存されていく形です タイトル 本文 書き込み日時 タイトル 本文 書き込み日時 エラー自体は出てないのですが書き込みが反映されません val_dunpで調べたところ resource(7) of type (mysql result) > このように出てきましたなにか文自体に必要なものがないのでしょうか? <?php $link = mysql_connect('localhost','user','pass'); if (!$link) { die('接続に失敗しました。'.mysql_error()); } $db_selected = mysql_select_db('ogawa',$link); if(!$db_selected) { die('データベース選択に失敗しました。'.mysql_error()); } $res = mysql_query('SELECT * FROM test'); if (!$res) { die('クエリーが失敗しました。'.mysql_error()); } if ( $link !==false) { $msg =''; $err_msg =''; if ( isset( $_POST['send'] )=== true) { $subject =$_POST['subject']; $honbun =$_POST['honbun']; $kakikomi = $_POST['kakikomi']; if ( $subject !=='' && $honbun !=='' && $kakikomi !=='' ) { $query = " INSERT INTO test ( " ."subject," ."honbun," ."kakikomi," .") VALUES ( " . "'" . mysql_real_escape_string( $link, $subject ) ."', " . "'" . mysql_real_escape_string( $link, $honbun )."'," . "'" . mysql_real_escape_string( $link, $kakikomi)."'," ." ) "; $kakikomi = date('Y-m-d h:i:s'); $res = mysql_query($query,$link); if ($res !==false) { $msg = '書き込みに成功しました。'; }else{ $err_msg = '書き込みに失敗しました。'; } }else{ $err_msg = 'タイトルと本文を書き込んで下さい。'; } } $query = 'SELECT id,subject,honbun,kakikomi FROM test'; $res = mysql_query($query,$link); $data = array(); var_dump($res); if ($res) { while($row = mysql_fetch_assoc($res)) { array_push($data,$row); } } arsort($data); }else{ echo"データベースの接続に失敗しました"; } mysql_close($link); ?> <html> <head> <meta http-equiv="content-type" content="text/html;charset=UTF8;" /> </head> <body>> <table border="1"> <form action="test6.php" method="POST"> <tr><th>タイトル<td><input type="text" name="text" size="50"></td></tr> <tr><th>本文<td><textarea name="subject" cols="52" rows="8"></textarea> <tr><td><input type="submit" value="保存 する" /></td><tr> </table> </form> <?php if ($msg !=='')echo'<p>'.$msg.'</p>'; if ($err_msg !=='')echo'<p style="color:#f00;">'.$err_msg.'</p>'; foreach($data as $key =>$val) { echo $val['subject'].''.$val['honbun'].''.$val['kakikomi'].'<br>'; } ?> </body> </html>

みんなの回答

  • shimix
  • ベストアンサー率54% (865/1590)
回答No.1

>mysql_real_escape_string( $link, $subject ) 関数の使い方をマニュアルで確認しましょう。 http://php.net/manual/ja/function.mysql-real-escape-string.php mysql_real_escape_stringの引数は、エスケープしたい文字列、接続リソースの順です。逆になっています。 接続リソースを先に書くのはMySQL関数ではなくMySQLi関数ですね。MySQL関数を使うのか(非推奨になっているMySQL関数は諦めて)MySQLi関数で書き直すのかキッチリ決めて、決めたら全部の関数を(引数の順序が正しいかどうか)見直してください。 MySQLiでは接続リソースを前に書くので接続リソースは省略不可。MySQL関数だと省略が可能ですしその方が一般的です(同時に複数の接続リソースを使うことはほとんどない)。なのでMySQL関数で統一するときは接続リソースを省略して書く方がいいです。間違ってMySQLi関数を書いていれば文法エラーになりますからね。 といっても、今から非推奨のMySQL関数で新しいソースを書くのは無駄だと思います。MySQLi関数で統一するか、いっそPDOにしちゃいましょう(強く推奨)。 http://php.net/manual/ja/mysqlinfo.api.choosing.php

関連するQ&A