我正在建立一个论坛,现在我已经有了这张桌子。请看这里:
此表适用于用户:
create table if not exists login_system(
user_id INT NOT NULL auto_increment,
email VARCHAR(100) NOT NULL,
password VARCHAR(100) NOT NULL,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
gender VARCHAR(50) NOT NULL,
about_yourself VARCHAR(150) NOT NULL,
my_website VARCHAR(100000) NOT NULL,
PRIMARY KEY(user_id)
);
此表适用于问题:
create table if not exists thread_question(
question_id INT NOT NULL auto_increment,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
question_title VARCHAR(500) NOT NULL,
question VARCHAR(100000) NOT NULL,
question_dateTime VARCHAR(100) NOT NULL,
PRIMARY KEY(question_id)
);
我想展示user's link
如果他/她发布了他/她的问题。它必须假设在悬停在人员姓名后提供链接。这样其他人就可以看到他/她的个人资料信息。
我可以通过以下方式简单地提取一些问题进入论坛:
<%
try{
Class.forName("com.mysql.jdbc.Driver");
Connection con=DriverManager.getConnection("jdbc:mysql://localhost:3306/forum", "root", "1234");
Statement st=con.createStatement();
ResultSet rs=st.executeQuery("select * from thread_question where question_id="+question_id);
while(rs.next()){
String first_name=rs.getString("first_name");
String last_name=rs.getString("last_name");
String thread_title=rs.getString("question_title");
String thread_question=rs.getString("question");
String thread_dateTime=rs.getString("question_dateTime");
...
...
...
%>
现在我希望显示login_system's table
以及question's table
你很清楚我们不能在这里创建两个语句。所以请帮助..我想从user_id
表格中获取login_system
,我可以通过点击链接轻松显示他/她的个人资料。你能帮我么?怎么做?
答案 0 :(得分:1)
您的方法存在各种问题。首先,如评论所述,您不应将连接代码直接放入JSP中。其次,由于SQL注入的风险,您不应通过连接字符串来创建语句。确保您了解其含义并改为使用PreparedStatement
。
要最终回答您的问题,而不是在thread_question
表中使用名字和姓,您应该在login_system
表中使用id的外键,然后在SQL中使用连接声明。如果我在这里粘贴逐字解决方案,我想这对你没什么帮助。
答案 1 :(得分:1)
首先遵循horse_with_no_name的建议,出于安全原因,不要将SQL代码放入JSP页面。
另外请修改你的语法/拼写,因为很难阅读你的问题。
另一件事是你想要阅读关于规范化数据库结构http://en.wikipedia.org/wiki/Database_normalization
的内容我很清楚,如果你愿意,你可以创建多个sql语句,它只是另一个连接,但在这种情况下你不需要(大多数情况下)
将thread_question表更改为此
create table if not exists thread_question(
question_id INT NOT NULL auto_increment,
user_id id INT NOT NULL,
first_name VARCHAR(100) NOT NULL,
last_name VARCHAR(100) NOT NULL,
question_title VARCHAR(500) NOT NULL,
question VARCHAR(100000) NOT NULL,
question_dateTime VARCHAR(100) NOT NULL,
PRIMARY KEY(question_id)
);
看起来你想要的SQL是这样的吗?
SELECT
LS.FIRST_NAME,
LS.LAST_NAME,
TQ.question_title,
TQ.question,
TQ.question_dateTime
FROM
login_system as LS
JOIN thread_question as TQ ON
LS.user_id = TQ.user_id
答案 2 :(得分:1)
关注Shifty解决方案,如果您不想加入该表,那么还有一个解决方案,即 1.向您查询您的thread_question并获取数据。 2.当您准备页面并提供userLink时,您必须在javascript中附加悬停事件,其中userid作为输入并触发ajax调用以获取用户相关数据并使用此数据。