0

我在 PHP 中运行这个 SQL 查询:

$sql="SELECT * FROM customer
        JOIN contacts ON (contacts.company_sequence = customer.sequence)
        WHERE customer.resellerid = '".$_POST["rid"]."' 
        AND contacts.email = '".$email."' 
        AND contacts.password = '".md5($password)."' ";
        $rs=mysql_query($sql,$conn);
        $result=mysql_fetch_array($rs);

然后尝试设置会话变量:

$_SESSION["sequence"]=$result["contacts.sequence"];

对于联系人表中的序列列,但它没有设置它。

会话工作正常,我设置错了吗?

4

2 回答 2

0

在 SQL 中,SELECT *仅表示“从查询的其余部分获取任何列”。它不会在它们的名称前面加上它们来自哪个表的任何标签,并且没有任何机制来区分具有相同名称的不同表中的列。

如果您想确定从查询中返回了哪些列,则应始终在SELECT语句中专门列出它们,例如SELECT contacts.sequence FROM ...;请注意,contacts.此处不是列名的一部分,而是在查询中用于区分您所指的列的标签。结果数组中的键就是'sequence'.

您还可以使用AS在结果中为列指定与实际表中不同的名称,因此SELECT contacts.sequence as contacts_sequence FROM ...将选择相同的列,但'contacts_sequence'在结果中为其指定键。

正如评论中所指出的,可以通过print_r($result)在代码中添加或类似内容来轻松验证检索到的列。

于 2013-09-15T23:28:40.713 回答
0

尝试

$_SESSION["sequence"]=$result["sequence"];

你得到一个关联数组 witought 表名

于 2013-09-15T18:33:39.767 回答