Php 返回0而不是实际值的变量
请在我的脚本中帮助我解决这个问题。在插入查询时,$article_id返回0,而实际上它不是0(1、2、3) 我试着在代码的不同点呼出Php 返回0而不是实际值的变量,php,mysql,Php,Mysql,请在我的脚本中帮助我解决这个问题。在插入查询时,$article_id返回0,而实际上它不是0(1、2、3) 我试着在代码的不同点呼出$article\u id,它实际上呼出了我想要的东西。但有一次我试着在比赛结束后回应 isset($\u POST['submit'])它不会呼出任何内容 我还检查了我在MySQL表中声明的类型….int。但仍将0插入数据库中 请问问题出在哪里 谢谢你的时间和耐心 $page_name = 'about'; $id = ""; if (isset($_GET[
$article\u id
,它实际上呼出了我想要的东西。但有一次我试着在比赛结束后回应
isset($\u POST['submit'])
它不会呼出任何内容
我还检查了我在MySQL表中声明的类型….int。但仍将0插入数据库中
请问问题出在哪里
谢谢你的时间和耐心
$page_name = 'about';
$id = "";
if (isset($_GET['id']))
{
$id = $_GET['id'];
$past1 = mysql_query("SELECT *
FROM about
WHERE about_id = '".$id."' ");
$row = mysql_fetch_array($past1);
echo "<p>" .$row['about_head']."</p>";
echo $row['about_content'];
$article_id = $row['about_id'] ;
$query6 = mysql_query("SELECT c.comment_body, c.comment_date
FROM comment AS c
INNER JOIN about AS ac ON c.article_id = ac.about_id
WHERE c.article_id = '".$article_id."'
AND page_name = '".page_name."'");
while ($comment = mysql_fetch_assoc($query6))
{
echo "<b>Comment:</b> " . $comment['comment_body'] . "<br/>" ;
echo "<b>Date of Comment:</b> " . $comment['comment_date'];
echo "<br/>" ;
echo "</div>";
}
}
if (isset($_POST['submit']))
{
$comment_body = mysql_real_escape_string($_POST['comment_body']);
if (($comment_body == "")
{
echo "<div class=\"error\" >" ;
echo "One/More Empty Field";
echo "</div>";
}
else
{
$query = "INSERT INTO comment (comment_id, article_id, username, page_name,
comment_body, comment_date)
VALUES (NULL, '".$article_id."', '".$_SESSION['logged_username']."',
'".$page_name."', '".$comment_body."', NOW())";
mysql_query($query);
}
}
$page_name='about';
$id=“”;
如果(isset($\u GET['id']))
{
$id=$_GET['id'];
$past1=mysql\u查询(“选择*
大约
其中about_id=“$id.”);
$row=mysql\u fetch\u数组($past1);
回声“”$row[“关于头”]。“”;
echo$row['about_content'];
$article_id=$row['about_id'];
$query6=mysql\u query(“选择c.comment\u body,c.comment\u date
从注释中选择c
内部连接关于作为c.article\u id=ac.about\u id上的ac
其中c.article\u id=“$article\u id.”
及第_name='”。第_name。“”);
while($comment=mysql\u fetch\u assoc($query6))
{
回声“Comment:.$Comment['Comment_body']。”
;
echo“评论日期:”.$Comment['Comment_Date'];
回声“
”;
回声“;
}
}
如果(isset($_POST['submit']))
{
$comment\u body=mysql\u real\u escape\u字符串($\u POST['comment\u body']);
如果($comment_body==“”)
{
回声“;
回显“一个/多个空字段”;
回声“;
}
其他的
{
$query=“插入注释(注释id、文章id、用户名、页面名称、,
注释(正文、注释日期)
值(NULL,“$article\u id.”,“$”会话['logged\u username']。”,
“$page_name.”,“$comment_body.”,NOW())”;
mysql\u查询($query);
}
}
对于在SQL中转换为字符串时表示为0的未初始化变量,您看到的0实际上是PHP NULL
假设您在第一次加载时检索到
$\u GET['id']
,并在另一个页面加载时执行帖子,$article\u id
仅在第一次初始化。除非设置了$\u GET['id']
,否则不会填充它。因此,在第一次加载时将其存储在$\u SESSION
中,并在处理帖子时从那里访问它
// Inside if (isset($_GET['id']))...
// article_id is retrieved and populated from the first SELECT statement...
$article_id = $row['about_id'] ;
// Store it in $_SESSION (assume session_start() was called somewhere we don't see)
$_SESSION['article_id'] = $article_id;
稍后在您的查询中,从$\u会话获取它:
$query = "INSERT INTO comment (comment_id, article_id, username, page_name,
comment_body, comment_date)
VALUES (NULL, '".$_SESSION['article_id']."', '".$_SESSION['logged_username']."',
'".$page_name."', '".$comment_body."', NOW())";
根据评论,您似乎已经意识到SQL注入漏洞。请确保不要忽略这些漏洞。在进行过程中针对这些漏洞编写代码,而不是稍后尝试返回并填写相应的转义和边界检查,这一点很重要。查看代码现在是否有效,如果没有帮助,请留下评论:
<?php
$page_name = 'about';
$id = "";
if (isset($_GET['id']))
{
$id = $_GET['id'];
$past1 = mysql_query("SELECT *
FROM about
WHERE about_id = '".$id."' ");
$row = mysql_fetch_array($past1);
echo "<p>" .$row['about_head']."</p>";
echo $row['about_content'];
$article_id = $row['about_id'] ;
/* next line is for debugging, check if you got
your $article_id variable populates with a value */
echo "<p>My article_id var value is:" .$article_id."</p>";
$query6 = mysql_query("SELECT c.comment_body, c.comment_date
FROM comment AS c
INNER JOIN about AS ac ON c.article_id = ac.about_id
WHERE c.article_id = '".$article_id."'
AND page_name = '".page_name."'");
while ($comment = mysql_fetch_assoc($query6)) {
echo "<b>Comment:</b> " . $comment['comment_body'] . "<br/>" ;
echo "<b>Date of Comment:</b> " . $comment['comment_date'];
echo "<br/>" ;
echo "</div>";
}
/* I've moved the if POST here since the insertion is based
on the existance of $article_id */
if (isset($_POST['submit'])) {
$comment_body = mysql_real_escape_string($_POST['comment_body']);
if ($comment_body == "") { // here you had a sintax error, one more (: if (($comment_body == "") {
echo "<div class=\"error\" >" ;
echo "One/More Empty Field";
echo "</div>";
} else {
$query = "INSERT INTO comment (comment_id, article_id, username, page_name,
comment_body, comment_date)
VALUES (NULL, '".$article_id."', '".$_SESSION['logged_username']."',
'".$page_name."', '".$comment_body."', NOW())";
mysql_query($query);
}
}
}
叹气,感谢您指出显而易见的问题。我非常清楚这一点。感谢$article\u id
只有在您还设置了$\u GET['id]时才会初始化
。您是否将该值与帖子一起传递到查询字符串中?谢谢您的回答。这并没有解决问题。当我在签入提交之前在脚本中的任何位置回显$article\u id时,它的回显效果良好。即使在插入查询之后,它的回显效果也很好。Thanks@user1378680我对此表示怀疑。echo$query;
而不是executi查看它实际包含的内容。