试图发布线程时,在'字段列表'"未知列


"Unknown column in 'field list'"when trying to post thread

我做了一个简单的论坛,你可以登录到帖子。我有一个用户表和一个主题表。当你发布一个线程,它发送信息到主题表包含id,标题,消息,日期和用户名。问题是,我只能张贴线程时登录的用户名只包含数字。我注意到我在INT上有topic_by(用户名),我把它改成了VARCHAR。这并没有解决问题,但它仍然只工作,如果你只有数字在你的用户名。如果您尝试使用包含字母的用户名发布,将显示以下行:

字段列表中未知列'asd'

我已经试过删除和重新制作表格。

发送数据的代码:

$sql="INSERT INTO $tbl_name(topic_id, topic_title, topic_message, topic_date, topic_by)
      VALUES ('NULL', '$title', '$message', '$datetime', ".$_SESSION["username"].")";

当您注册一个帐户时,它将数据发送到users表,包括user_name和使用字母和/或数字,即使topic_by行具有相同的属性。

这是因为您试图插入".$_SESSION["username"]."而不使用引号'包围,因为它不是一个整数字段。这将使您的数据库理解您的实际username作为一个列。只需引用'".$_SESSION["username"]."'

那么你的代码就是这样的

$sql="INSERT INTO $tbl_name (topic_id, topic_title, topic_message, topic_date, topic_by) VALUES ('NULL', '$title', '$message', '$datetime', '".$_SESSION["username"]."')";

无论如何,我强烈建议你使用prepared statements来避免任何安全风险,你可以在这里阅读关于PDO 的一个很好的教程