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