Php '中的未知列;字段列表';建站

Php '中的未知列;字段列表';建站,php,mysql,Php,Mysql,我到处找了,但找不到这个问题的答案。我已经看到了一些帮助人们的解决方案,但当我尝试它时,我发现我做的每件事都是正确的,没有什么需要修复的。我正在制作一个论坛,并试图将这些内容插入mysql表中,但每次尝试时都会显示: “字段列表”中的未知列“6c09e4fe82d47011bf9b25b05946307f” 长代码是其中一个用户的用户id,它应该被插入,但出于某种原因,它会查找具有该名称的列。我只在第一次查询时出错,所以第二部分可能完全没有问题,我不知道 $sql = "INSERT INTO

我到处找了,但找不到这个问题的答案。我已经看到了一些帮助人们的解决方案,但当我尝试它时,我发现我做的每件事都是正确的,没有什么需要修复的。我正在制作一个论坛,并试图将这些内容插入mysql表中,但每次尝试时都会显示:

“字段列表”中的未知列“6c09e4fe82d47011bf9b25b05946307f”

长代码是其中一个用户的用户id,它应该被插入,但出于某种原因,它会查找具有该名称的列。我只在第一次查询时出错,所以第二部分可能完全没有问题,我不知道

$sql = "INSERT INTO 
                    topics(topic_subject,
                           topic_date,
                           topic_cat,
                           topic_by)
               VALUES('" . mysql_real_escape_string($_POST['topic_subject']) . "',
                           NOW(),
                           " . mysql_real_escape_string($_POST['topic_cat']) . ",
                           ". $_SESSION['userid'] ."
                           )";

        $result = mysql_query($sql);
        if(!$result)
        {
            //something went wrong, display the error
            echo 'You did everything right, yet there is an error. WEIRD RIGHT???<br /><br />' . mysql_error();
            $sql = "ROLLBACK;";
            $result = mysql_query($sql);
        }
        else
        {
            //the first query worked, now start the second, posts query
            //retrieve the id of the freshly created topic for usage in the posts query
            $topicid = mysql_insert_id();

            $sql = "INSERT INTO
                        posts(post_content,
                              post_date,
                              post_topic,
                              post_by)
                    VALUES
                        ('" . mysql_real_escape_string($_POST['post_content']) . "',
                              NOW(),
                              " . $topicid . ",
                             ". $_SESSION['userid'] ."
                        )";
            $result = mysql_query($sql);
$sql=“插入到
主题(主题),
主题(日期),
主题(猫),
主题(作者)
值(“.mysql\u real\u escape\u string($\u POST['topic\u subject'])。”,
现在(),
“.mysql\u real\u escape\u字符串($\u POST['topic\u cat'])。”,
“$\u会话['userid']”
)";
$result=mysql\u查询($sql);
如果(!$result)
{
//出现问题,请显示错误
echo“你做的每件事都是对的,但是有一个错误。奇怪吧?”

。mysql_error(); $sql=“回滚;”; $result=mysql\u查询($sql); } 其他的 { //第一个查询成功,现在开始第二个查询,发布查询 //检索新创建的主题的id,以便在posts查询中使用 $topicid=mysql\u insert\u id(); $sql=“插入到 帖子(post_内容, 发布日期, 后主题, 邮递员(邮递员) 价值观 (“.mysql\u real\u escape\u字符串($\u POST['POST\u content'])。”, 现在(), “$topicid。”, “$\u会话['userid']” )"; $result=mysql\u查询($sql);
您没有在插入中引用字符串:

 ". $_SESSION['userid'] ."
应该是:

'". $_SESSION['userid'] ."'
需要用引号括起来

'" . mysql_real_escape_string($_POST['topic_cat']) . ",'
只要
echo$sql;
,您就会看到错误


另外,请确保你认真地使用MySQLi…你可能不会有这个问题。你的错误消息是无用的。不要假装你的查询总是正确的。有一个可爱的错误消息,如“你做的一切都对。好了,让妈妈帮你叫坏人”对任何人都没有帮助。如果查询失败,请给出确切的原因,例如
mysql\u query($sql)或die(mysql\u error())
远比假装自己无误有用。即使SQL语法完全正确,也有太多其他失败原因。@LoganMurphy他说“长代码是问题中某个用户的用户id”。@sammith:没关系。OP有
值(…,6c09e4fe…)< /代码>没有引用的值。没有引号,它将被视为字段值。引用正在插入的记录中的某个其他字段并没有什么意义,但它仍然是有效的语法。@ McCB不,他没有。>:I
'" . mysql_real_escape_string($_POST['topic_cat']) . ",'