こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

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>

投稿日時 - 2017-05-11 12:12:19

QNo.9327999

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.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

投稿日時 - 2017-05-11 14:34:17