我的脚本类似于 -
$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']];
如何在另一个变量行中设置一个变量行,因为它不起作用。基本上,我需要选择用户名,然后从其他表中选择用户用户名的列,其中写有用户点。
我在考虑添加 -
$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' - '胆红素' - '康纳' - '伊利安' '1' - '2' - '3' - '55'
不要问,为什么我不把这些点放在同一张桌子上,因为如果可以,我会这样做;)!
答案 0 :(得分:1)
听起来你需要重新设计表格,我建议像这样的表结构:
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];
答案 1 :(得分:0)
SELECT users.id, users.name, other_table.points FROM users LEFT JOIN other_table ON other_table.name=users.name