0

したがって、ユーザーが現在コメントしている記事の ID である $aid を保存するために php が必要ですが、常に 0 として保存されます。たとえば、ページ localhost/article.php?article_id にいる場合=69 と書いて echo $aid; 69がエコーされますが、データベースに保存したい場合は、0として保存するだけです

if (isset($_GET['article_id'])) {

include("mySQLcon.inc.php");
$aid = mysql_real_escape_string($_GET['article_id']);
$query = "SELECT * FROM front_articles WHERE id = '$aid'";
$sql = mysql_query($query); 

}

while ($articles = mysql_fetch_object($sql)) {
?>
<div id="IApage">
<?php
echo '<b>' . $articles->title.'</b>'.'<br>'.
             $articles->message. '<br>';
?>
</div>
<?php
}
if(isset($_COOKIE['user'])){
?>
<div id="article_comment_form">
<form id="arti_com_form" name="article_com_for" method="post" action="article.php">  
    <textarea name="comment" rows="7" cols="50"></textarea><br>
    <input name="com_submit" type="submit" value="Comment"/>
</form>
</div>
<?php
}
if (isset($_POST['com_submit'])) {
  $comment_message = $_POST['comment'];
    $comment_query = mysql_query("INSERT INTO front_article_comments (article_id, poster_id, poster_username, message, date) VALUES ('$aid', '$poster_id', '$username', '$comment_message', NOW())");
}
echo $aid;
?>
4

4 に答える 4

4

データベースでarticle_idのタイプがINTで、それにSTRINGを入力すると、0 として挿入されます。

一重引用符を削除してみてください。

また、PHP をアップグレードする予定がある場合は、遅かれ早かれ PDO の使用に慣れてください。そうすれば、最終的にアップグレードすることを決定したときに、戻ってすべてを変更する必要がなくなります。

于 2013-10-04T20:55:35.347 に答える
2

おそらくid、データベースにフィールドがint. しかし、一重引用符を使用するとid文字列が作成されました。

そうでないため、文字列は自動的に 0 に変換されます。

一重引用符を削除するのが最善であり、オプションしか表示されません!

編集 おそらく、エラー報告をオンにして、警告/エラーがあるかどうかを確認する必要がありますか? それで、私たちは物事を手に入れますか?

于 2013-10-04T20:57:25.690 に答える
0

この行を変更してみてください

 $comment_query = mysql_query("INSERT INTO front_article_comments (article_id, poster_id, poster_username, message, date) VALUES ('$aid', '$poster_id', '$username', '$comment_message', NOW())");

の中へ

 $comment_query = mysql_query("INSERT INTO front_article_comments (article_id, poster_id, poster_username, message, date) VALUES ($aid, '$poster_id', '$username', '$comment_message', NOW())");

ご覧のとおり、$aid は整数であると推測しているため、$aid の周りの引用符を削除しました。

于 2013-10-04T20:56:39.617 に答える
0

UPDATE : @Kris これをデモで機能させるには、$poster_id、$username、および $_COOKIE['user'] を静的な値に設定する必要がありました。これらは実際のコードのどこに設定されていますか? このコードは私のために働いて、私のテーブルにデータを挿入しました: http://codepad.org/Kv9GS4CC

投稿後の結果:

> mysql> select * from front_article_comments;
> +----+------------+-----------+-----------------+-------------------+---------------------+
> | id | article_id | poster_id | poster_username | message           | date                |
> +----+------------+-----------+-----------------+-------------------+---------------------+
> |  1 |          1 |         1 | Chris           | This is a comment | 2013-10-04 21:32:00 |
> +----+------------+-----------+-----------------+-------------------+---------------------+

ORIGINAL : あなたのコードは、article_id の値なしで article.php にポスト バックしています。最終的な結果は、$_GET['article_id'] が空であることです。これは、$aid を設定した場所です。コメントの内容もエスケープする必要があります。これを試して:

<?php

if (isset($_GET['article_id'])) {

include("mySQLcon.inc.php");
$aid = (int)$_GET['article_id'];
$query = "SELECT * FROM front_articles WHERE id = ".$aid;
$sql = mysql_query($query); 

}

while ($articles = mysql_fetch_object($sql)) {
?>
<div id="IApage">
<?php
echo '<b>' . $articles->title.'</b>'.'<br>'.
             $articles->message. '<br>';
?>
</div>
<?php
}
if(isset($_COOKIE['user'])){
?>
<div id="article_comment_form">
<form id="arti_com_form" name="article_com_for" method="post" action="article.php?article_id=<?php echo $aid; ?>">  
    <textarea name="comment" rows="7" cols="50"></textarea><br>
    <input name="com_submit" type="submit" value="Comment"/>
</form>
</div>
<?php
}
if (isset($_POST['com_submit'])) {
    $comment_message = mysql_real_escape_string($_POST['comment']);
    $comment_query = mysql_query("INSERT INTO front_article_comments (article_id, poster_id, poster_username, message, date) VALUES (".$aid.", ".$poster_id.", '".$username."', '".$comment_message."', NOW())");
}
echo $aid;
?>
于 2013-10-04T20:58:33.197 に答える