Php &引用;'中的未知列;字段列表'&引用;当试图发布线程时
我已经做了一个简单的论坛,你可以登录发布帖子。我有一个用户表和一个主题表。发布线程时,它会将信息发送到包含id、标题、消息、日期和用户名的topics表。问题是,我只能在使用仅包含数字的用户名登录时发布线程。我注意到我在INT上有一个主题_by(username),我把它改为VARCHAR。但这并没有解决问题,它仍然只能在用户名中只有数字的情况下工作。如果您尝试使用包含字母的用户名发布,将显示以下行: “字段列表”中的未知列“asd” 我试过删除并重新制作表格 这是发送数据的代码:Php &引用;'中的未知列;字段列表'&引用;当试图发布线程时,php,mysql,Php,Mysql,我已经做了一个简单的论坛,你可以登录发布帖子。我有一个用户表和一个主题表。发布线程时,它会将信息发送到包含id、标题、消息、日期和用户名的topics表。问题是,我只能在使用仅包含数字的用户名登录时发布线程。我注意到我在INT上有一个主题_by(username),我把它改为VARCHAR。但这并没有解决问题,它仍然只能在用户名中只有数字的情况下工作。如果您尝试使用包含字母的用户名发布,将显示以下行: “字段列表”中的未知列“asd” 我试过删除并重新制作表格 这是发送数据的代码: $sql="
$sql="INSERT INTO $tbl_name(topic_id, topic_title, topic_message, topic_date, topic_by)
VALUES ('NULL', '$title', '$message', '$datetime', ".$_SESSION["username"].")";
当您注册一个帐户时,它会将数据发送到用户表,其中包括用户名,该表使用字母和/或数字,即使按行的主题具有相同的属性。这是因为您试图插入
“$\u会话[“username”]”
不带引号”
这是必需的,因为它不是整数字段。这将使您的数据库将实际的用户名
理解为一列。只需使用quote“$\u会话[“用户名”]。”
所以你的代码看起来是这样的
$sql="INSERT INTO $tbl_name (topic_id, topic_title, topic_message, topic_date, topic_by) VALUES ('NULL', '$title', '$message', '$datetime', '".$_SESSION["username"]."')";
无论如何,我强烈建议您使用
准备好的语句
,以避免任何安全风险,您可以阅读一篇关于PDO
的不错的教程。不,请不要将您的代码更改为那样。为了安全起见,在那里进行一些变量筛选!你只是要一个Bobby Tables的案子。不,PDO不是一种神奇的杀死所有漏洞的药丸。