0

所以我需要 php 来存储 $aid,它应该是用户当前正在评论的文章的 ID,但是它总是将它保存为 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 周围的引号去掉了,因为我猜它是一个整数。

于 2013-10-04T20:56:39.617 回答
0

更新:@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.php,但没有 article_id 的值。最终结果是 $_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 回答