【问题标题】:Sending a variable in PHP with a form to the same page, but I am getting error将带有表单的 PHP 变量发送到同一页面,但出现错误
【发布时间】:2011-11-09 11:13:11
【问题描述】:

请帮忙,我正在用 PHP 编写一个页面,用户选择一个主题,单击链接并被定向到一个可以评论的页面。用户使用一个小表单来评论一个主题。我正在尝试将表单提交到同一页面。这样用户提交的评论就会立即显示出来。我正在使用 GET 方法发送带有表单的变量,但我得到: 数据库查询失败:您的 SQL 语法有错误;查看与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 '' 附近使用的正确语法,

但它正在写入我的数据库,只是不显示数据

这是我的代码(在头部之前):

<?php 

// GET subject_id from previous page and see if it has been set
if (isset($_GET['subj'])) {  
subject_id = $_GET['subj'];
} else {
$subject_id = NULL;
}


// process form that was submitted to same page
if (isset($_POST['submit'])) {

$subject_id = mysql_prep($_GET['subj']);
$commentbox = trim(mysql_prep($_POST['commentbox']));

$query = "INSERT INTO comments (
subject_id, content
) VALUES (
{$subject_id}, '{$commentbox}'
)";


if ($result = mysql_query($query, $connection)) {
// as is, $message will still be discarded on the redirect
$message = "The page was successfully created.";
redirect_to("blog_subject.php");
} else {
$message = "The page was unsuccessfully created.";
redirect_to("blog_subject.php");
}
}
?>

......然后是显示主题、cmets和表单的代码......

<?php
// Retrieving Subject Name from subjects database
global $connection;
if (isset($_GET['subj'])) {$subject_id = $_GET['subj'];} 

$query = "SELECT * FROM subjects WHERE subject_id = {$subject_id}";

$result_set = mysql_query($query, $connection);

if (!$result_set) {die("Database query Failed: " . mysql_error());}

if ($subject_set = mysql_fetch_array($result_set)) {

echo $subject_set['subject_name'];

} else {

return NULL;

}
?>
<br />
<?php
// Retrieving Comments from comments database

global $connection;

$subject_id = $_GET['subj'];

$comment_set = mysql_query("SELECT * FROM comments WHERE subject_id =
{$subject_id}", $connection);

if (!$comment_set) {
die("Database query Failed: " . mysql_error());
}

echo "<ul class=\"pages\">";
while ($comment_for_subject = mysql_fetch_array($comment_set)) {
echo "<li>{$comment_for_subject["content"]}</li>";
}
echo "</ul>";   
?>
<br /> 

<form action="blog_subject.php?subj=<?php echo $subject_id_van_vorige_bladsy; ?>"
method="post">
<textarea name="commentbox" cols="100" rows="10"></textarea><br />
<input name="submit" type="submit">
</form>

【问题讨论】:

    标签: php database forms variables


    【解决方案1】:

    subject_id 是字符串还是数字?如果它是一个字符串,你需要像这样转义它:

    $comment_set = mysql_query("SELECT * FROM comments WHERE subject_id = '{$subject_id}'", $connection);
    

    如果不是这样,请在 $comment_set 上做一个回显并发布它的输出

    【讨论】:

    • 那么创建链接的代码有问题。不应该有这个 {...} 的东西。您的脚本在这里需要一个数字
    • 当我回显 &comment_set 我得到资源 id #9;
    • 但 subject_id 是一个数字。我想要做的是在一页上有主题,如果你点击一个主题,你会移动到带有该主题及其 cmets 的页面。到目前为止一切正常,但是当用户提交评论时,我得到了错误。
    • 是的,几个小时前这里看错了方向。正如我在上一条评论中所说,查看在 blog.php 上创建该链接的代码。这给出了奇怪的 {$subject.....} 字符串作为 subj,但你的 sql 服务器希望在那里有一个数字。如果您在查询之前回显 $subject_id,您应该能够看到这一点。这应该是一个数字。如果不是断开的链接是您的问题,我敢打赌。
    • 是的,你说得对!!!我是 echo subject_id 但没有显示任何内容。我在操作部分与我的表单一起发送的 subject_id 没有完成它的工作,但我之前做过这个并且它有效吗?我究竟做错了什么。这是我的代码:
      如果我将 $subject_id 放在 {} 中,那么我会收到解析错误?跨度>
    猜你喜欢
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多