0

我制作了一个简单的论坛,您可以在其中登录以发布主题。我有一个用户表和一个主题表。当您发布线程时,它会将信息发送到包含 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"].")";

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

4

1 回答 1

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

于 2013-06-07T12:59:34.203 回答