“尝试发布帖子时,'字段列表'中的未知列”

时间:2013-06-07 12:57:27

标签: php mysql

我创建了一个简单的论坛,您可以在其中登录帖子。我有一个用户表和一个主题表。当您发布一个帖子时,它会向包含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行具有相同的属性,THAT也可以使用字母和/或数字。

1 个答案:

答案 0 :(得分:2)

这是因为您尝试插入".$_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 here

的精彩教程