Php 复杂的SQL查询。。。返回变量的名称
请原谅,我相信这对大多数人来说都是一个基本问题,但我对来自不同表的表列有一个问题,这些表的名称彼此相同,并且试图在同一查询中从两个表中进行选择 好的,这是我的代码:Php 复杂的SQL查询。。。返回变量的名称,php,sql,mdb2,Php,Sql,Mdb2,请原谅,我相信这对大多数人来说都是一个基本问题,但我对来自不同表的表列有一个问题,这些表的名称彼此相同,并且试图在同一查询中从两个表中进行选择 好的,这是我的代码: $q_value = $mdb2->quote($_POST['query']); $field = $_POST['field']; $sql = "SELECT m.*, l.name FROM memberlist m, mail_lists l WHERE m.$field=$q_value
$q_value = $mdb2->quote($_POST['query']);
$field = $_POST['field'];
$sql = "SELECT m.*, l.name FROM memberlist m, mail_lists l
WHERE m.$field=$q_value
AND l.id = m.list
ORDER BY m.id";
$l_list = $mdb2->queryAll($sql, '', 'MDB2_FETCHMODE_ASSOC');
表memberlist包含以下列:
id、电子邮件、列表、性别、姓名
“邮件列表”表有以下列:
身份证,姓名
运行查询后,我稍后使用foreach循环查询结果,如下所示:
foreach ($l_list as $l){ //blahblah }
问题是邮件列表中的“name”列指的是列表的名称,而memberlist中的“name”列指的是成员的名称
当我以后访问$l->name(在foreach中)时,我会得到m.name还是l.name?此外,我如何访问另一个
或者我只需要做两个单独的查询?为什么您不能简单地使用:
SELECT m.*, l.name as l_name FROM ...
然后区分name
和l_name
这是一个风格问题,所以其他人可能不同意,但我从不在查询中使用
*
,倾向于使用显式列规范。在您的情况下,这实际上不是一个问题,除非您想:
SELECT m.*, l.* FROM ...
并且仍然区分这两个名字。有了明确的列规范,您可以在每个列中添加一个
as
子句,以给出唯一的名称。为什么不能简单地使用:
SELECT m.*, l.name as l_name FROM ...
然后区分name
和l_name
这是一个风格问题,所以其他人可能不同意,但我从不在查询中使用
*
,倾向于使用显式列规范。在您的情况下,这实际上不是一个问题,除非您想:
SELECT m.*, l.* FROM ...
并且仍然区分这两个名字。有了明确的列规范,您可以在每个列中添加一个
as
子句,以提供唯一的名称。完美!我现在觉得自己像个傻瓜。哈哈,谢谢!完美的我现在觉得自己像个傻瓜。哈哈,谢谢!