Php SQL选择的问题
可能重复:Php SQL选择的问题,php,mysql,Php,Mysql,可能重复: 我有类似的脚本- $sql = "SELECT * FROM `users`" $q = mysql_query($sql) or die(mysql_error()); $row = mysql_fetch_array($q); $sql1 = "SELECT * FROM `other_table`"; $q1 = mysql_query($sql1) or die(mysql_error()); $row1 = mysql_fetch_array($q1); $item =
我有类似的脚本-
$sql = "SELECT * FROM `users`"
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($q);
$sql1 = "SELECT * FROM `other_table`";
$q1 = mysql_query($sql1) or die(mysql_error());
$row1 = mysql_fetch_array($q1);
$item = $row1[$row['username']];
如何将一个变量行设置为另一个变量行,因为它不起作用。基本上,我需要选择username,然后从另一个表中选择带有username的列,其中写入了用户点
我在考虑添加-
$sql = "SELECT * FROM `users`"
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($q);
$sql1 = "SELECT `".$row['username']."` FROM `other_table` WHERE `uid` = 1";
$q1 = mysql_query($sql1) or die(mysql_error());
$row1 = mysql_fetch_array($q1);
$item = $row1[xxxxxxxxxx]; // DONT KNOW HOW TO DEFINE IT, so it takes out found variable (there is only one).
我已经有问题了,但没有完整的信息,我不知道如何删除它:(
这是我的桌子-
使用者
“id”-“名称”
“1”-“比尔”
“2”-“康纳”
‘3’——‘伊利安’
其他_表(为用户保存点数)
“id”——“Bil”——“Conor”——“Ilian”
‘1’——‘2’——‘3’——‘55’
不要问,为什么我不把分数放在同一张表上,因为如果我可以,我会这么做;) 听起来您需要重新设计表格,我建议使用如下表格结构:
Table Users
ID | Name
Table Points
UserID | Points
通过这种方式,您可以在表之间添加外键约束,然后执行简单的联接查询,如:
SELECT U.Name, P.Points FROM Users AS U INNER JOIN Points AS P ON U.ID = P.UserID
然后,您的php代码如下所示:
$sql = "SELECT U.Name, P.Points FROM Users AS U INNER JOIN Points AS P ON U.ID = P.UserID";
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($q);
以下是为您创建表的查询:
CREATE TABLE Users (ID INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(50) NOT NULL, PRIMARY KEY (ID))
CREATE TABLE Points (UserID INT NOT NULL, Points INT,
FOREIGN KEY(UserID) REFERENCES Users(ID) ON UPDATE CASCADE ON DELETE CASCADE)
编辑:
这应该允许您获得值(注意:未经测试,因为我目前没有一个php/mysql实例需要处理),但是为了获得更健壮的解决方案,您确实应该考虑重新设计表模式
$userName = $row['username'];
$sql1 = "SELECT [". $userName ."] FROM other_table WHERE [uid] = 1";
$q1 = mysql_query($sql1) or die(mysql_error());
$row1 = mysql_fetch_array($q1);
$item = $row1[$userName];
听起来您需要重新设计表格,首先,我建议使用如下表格结构:
Table Users
ID | Name
Table Points
UserID | Points
通过这种方式,您可以在表之间添加外键约束,然后执行简单的联接查询,如:
SELECT U.Name, P.Points FROM Users AS U INNER JOIN Points AS P ON U.ID = P.UserID
然后,您的php代码如下所示:
$sql = "SELECT U.Name, P.Points FROM Users AS U INNER JOIN Points AS P ON U.ID = P.UserID";
$q = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_array($q);
以下是为您创建表的查询:
CREATE TABLE Users (ID INT NOT NULL AUTO_INCREMENT,
Name VARCHAR(50) NOT NULL, PRIMARY KEY (ID))
CREATE TABLE Points (UserID INT NOT NULL, Points INT,
FOREIGN KEY(UserID) REFERENCES Users(ID) ON UPDATE CASCADE ON DELETE CASCADE)
编辑:
这应该允许您获得值(注意:未经测试,因为我目前没有一个php/mysql实例需要处理),但是为了获得更健壮的解决方案,您确实应该考虑重新设计表模式
$userName = $row['username'];
$sql1 = "SELECT [". $userName ."] FROM other_table WHERE [uid] = 1";
$q1 = mysql_query($sql1) or die(mysql_error());
$row1 = mysql_fetch_array($q1);
$item = $row1[$userName];
@你能告诉我问题是什么吗?令人印象深刻根据您的要求,您的
other_表
为每个用户都有一列?因此,如果您有用户Bill
,Jim
和Jake
,其他表
将包含名为Bill
,Jim
,Jake
和uid
(可能还有其他一些)的列,对吗?你能列出你的表格结构吗?@Chris:很容易点击一个用户名,看看他们问了什么。在这种情况下,只有两个问题是相同的(标题除外)。@konsolenfreddy你能说出问题是什么吗?令人印象深刻根据您的要求,您的other_表
为每个用户都有一列?因此,如果您有用户Bill
,Jim
和Jake
,其他表
将包含名为Bill
,Jim
,Jake
和uid
(可能还有其他一些)的列,对吗?你能列出你的表格结构吗?@Chris:很容易点击一个用户名,看看他们问了什么。在这种情况下,只有两个问题结果是相同的(除了标题)。这一个对我不适用。如果您将告诉我如何从该查询中获取值-$sql1=“SELECT”$row['username']。“
来自其他表,其中uid
=1”;它会起作用的。伙计,它对我的案例不起作用:(!阅读上面的一条评论:(为什么你不能更改设计。你可以将uid
列添加到Points表中,然后你可以在上建立索引(UserID,uid)
为每个用户和每个uid设置值并执行查找。使用当前设计,如果添加新用户,则必须更改积分表以添加新列。此选项对我不起作用。如果您告诉我如何从此查询中获取值-$sql1=“SELECT”。$row['username']。“FROMother_table
WHEREuid
=1”;它会起作用。伙计,这对我的情况不起作用:(!阅读上面的一条评论:(为什么你不能更改设计。你可以将uid
列添加到Points table,然后你可以在(UserID,uid)上建立索引)
为每个用户和每个uid设置值并执行查找。使用当前设计,如果添加新用户,则必须更改点表以添加新列。