Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php &引用;'中的未知列;字段列表'&引用;当试图发布线程时_Php_Mysql - Fatal编程技术网

Php &引用;'中的未知列;字段列表'&引用;当试图发布线程时

Php &引用;'中的未知列;字段列表'&引用;当试图发布线程时,php,mysql,Php,Mysql,我已经做了一个简单的论坛,你可以登录发布帖子。我有一个用户表和一个主题表。发布线程时,它会将信息发送到包含id、标题、消息、日期和用户名的topics表。问题是,我只能在使用仅包含数字的用户名登录时发布线程。我注意到我在INT上有一个主题_by(username),我把它改为VARCHAR。但这并没有解决问题,它仍然只能在用户名中只有数字的情况下工作。如果您尝试使用包含字母的用户名发布,将显示以下行: “字段列表”中的未知列“asd” 我试过删除并重新制作表格 这是发送数据的代码: $sql="

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

“字段列表”中的未知列“asd”

我试过删除并重新制作表格

这是发送数据的代码:

$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不是一种神奇的杀死所有漏洞的药丸。