Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/229.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 使用两个具有内部联接的表进行MySql查询(我认为)_Php_Mysql_Sql - Fatal编程技术网

Php 使用两个具有内部联接的表进行MySql查询(我认为)

Php 使用两个具有内部联接的表进行MySql查询(我认为),php,mysql,sql,Php,Mysql,Sql,我试图让这个查询正常工作,我只想显示物理参考(来自表1)等于SESS_MEMBER_ID(来自MySQL中的members表,但来自登录创建的会话)的记录 我不确定如何做到这一点,因为我仍然掌握着php的概念。我不确定您是否必须在末尾添加一些代码来告诉它该字段来自表members 我的目标是只显示IA tables PhysioReference字段中的记录,其中该字段等于members表中会话中保存的SESS_MEMBER_ID $sql="SELECT * FROM IA tb

我试图让这个查询正常工作,我只想显示物理参考(来自表1)等于
SESS_MEMBER_ID
(来自MySQL中的members表,但来自登录创建的会话)的记录

我不确定如何做到这一点,因为我仍然掌握着php的概念。我不确定您是否必须在末尾添加一些代码来告诉它该字段来自表
members

我的目标是只显示IA tables PhysioReference字段中的记录,其中该字段等于members表中会话中保存的SESS_MEMBER_ID

$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id=SESS_MEMBER_ID";
$result=mysql_query($sql);
成员-表名

成员id、名字、姓氏、登录名、密码、

IA-表名

参考,名字,姓氏,DOB,生理参考


提前感谢

定义的变量不会在字符串中解析

$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id=" . SESS_MEMBER_ID;
$result=mysql_query($sql);
或者,如果是字符串:

$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id='" . SESS_MEMBER_ID . "'";
$result=mysql_query($sql);
$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id='{$_SESSION["MEMBER_ID"]}';
$result=mysql_query($sql);
或者,它可能不是一个定义的变量,而是一个会话变量

// At the start of your code.

session_start();

// ... 

$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id=" . $_SESSION["MEMBER_ID"];
$result=mysql_query($sql);
或者,如果
成员ID
是字符串:

$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id='" . SESS_MEMBER_ID . "'";
$result=mysql_query($sql);
$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id='{$_SESSION["MEMBER_ID"]}';
$result=mysql_query($sql);

(或者如果您将其命名为
SESS\u MEMBER\u ID
,请尝试
$\u SESSION[“SESS\u MEMBER\u ID”]

您可能错过了查询中的美元符号:

$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id=$SESS_MEMBER_ID";
$result=mysql_query($sql);
由于查询位于双引号内,因此可以在查询内使用变量,而无需发出或连接。但是,如果您的成员ID是字符串(字母数字),则在语句中需要一些单引号,如下所示:

$sql="SELECT * 
      FROM IA tb1, members tb2 
      WHERE tb1.PhysioReference=tb2.member_id
      AND tb2.member_id='$SESS_MEMBER_ID'";
$result=mysql_query($sql);
注意,如果您还没有使用它创建变量,那么您引用的会话是错误的。您可能希望尝试以下方法:

编辑(基于评论):


您得到的错误(或意外结果)是什么;登录的用户ID为100351(由echo确认,用于测试目的,echo$\会话['SESS\ U成员\ ID'])。因此,我只想让用户会话的“SESS_MEMBER_ID”(从登录名)等于IA表的PhysioReference中的一条记录(例如,“SESS_MEMBER_ID”=100351,PhysioReference from IA=100351,然后显示该结果)。我已经尝试了这个方法,但它不起作用,我能为您提供更多帮助信息吗?我只想显示记录,其中IA表中的物理引用等于SESS_成员ID。您可能需要替换
SESS_成员ID
-如果您没有使用
$\u会话[“成员ID”]
或其他方法(如果它应该在会话中,则执行
变量转储($\u会话))来定义
检查;另外,别忘了
会话_start();
)。我想你是对的,我只是不知道如何在我的代码中完成这一部分,你能不能把它放在你的答案中?我相信你在最后一个选项上是对的,因为我对这个问题很陌生,并且没有正确地引用会话。我已经尝试了所有3个选项,但没有显示,我必须先定义变量吗?是的,您需要匹配。你应该在分配课时参考课时。无论您如何分配/保存会话变量,都需要在SQL语句中引用它。您可以通过
echo$sql轻松地检查这一点在执行之前,确保正确传递变量。echo从IA tb1、成员tb2返回SELECT*,其中tb1.PhysioReference=tb2.member_id和tb2.member_id=看起来您的会话分配/传递不正确。您应该在代码中验证它是否被正确分配(您可以通过在保存后立即回显来完成),并确保在查询中使用完全相同的会话变量,以确保按照预期创建SQL。不要着急。当这些东西成为你的第二天性时,答案就会越来越快。同时,祝你在编码方面好运-如果你再次陷入困境,请随时提问好先生!