Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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 SQL选择的问题_Php_Mysql - Fatal编程技术网

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']。“
FROM
other_table
WHERE
uid
=1”;它会起作用。伙计,这对我的情况不起作用:(!阅读上面的一条评论:(为什么你不能更改设计。你可以将
uid
列添加到Points table,然后你可以在
(UserID,uid)上建立索引)
为每个用户和每个uid设置值并执行查找。使用当前设计,如果添加新用户,则必须更改点表以添加新列。