Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 基于3个变量确定值的MySQL查询_Php_Mysql_Sql_Database - Fatal编程技术网

Php 基于3个变量确定值的MySQL查询

Php 基于3个变量确定值的MySQL查询,php,mysql,sql,database,Php,Mysql,Sql,Database,我需要能够精确定位MySQL表中由两个变量定义的值 在网站的前端,有一个表单,可以接受各种字段。在本例中,让我们重点关注以下两个方面: 帐号 帐户名 我开发了一个脚本,它将使用ajax脚本在输入后检查“帐号”,如果找到匹配项,当用户从字段中签出时,它将显示“帐号” 困难在于从数据库表的格式中找到单个结果。例如: ”SELECT * FROM example_table WHERE name=’$accountnumber’” 提供等于帐号的所有值的列表,但不提供帐号的任何记录 “从示例_表中选

我需要能够精确定位MySQL表中由两个变量定义的值

在网站的前端,有一个表单,可以接受各种字段。在本例中,让我们重点关注以下两个方面:

  • 帐号

  • 帐户名

  • 我开发了一个脚本,它将使用ajax脚本在输入后检查“帐号”,如果找到匹配项,当用户从字段中签出时,它将显示“帐号”

    困难在于从数据库表的格式中找到单个结果。例如:

    ”SELECT * FROM example_table WHERE name=’$accountnumber’”
    
    提供等于帐号的所有值的列表,但不提供帐号的任何记录

    “从示例_表中选择*,其中name='$accountname'

    提供与帐户名相等的所有值的列表,但不提供帐户号的任何记录

    $record
    值是
    $accountnumber
    $accountname
    之间唯一的公共线程

    总之,我需要帮助创建循环,该循环可以首先获取
    $accountnumber
    值,以查找与该数字关联的
    $record
    值。其次,它将获取确定的
    $record
    值,并将其与
    $accountname
    值匹配。每个唯一的
    $record
    值只有一个
    $accountnumber
    $accountname


    更新:关于这个问题有好几条评论。为了提供更多背景信息,只有一个表。可用的最佳鉴别器似乎是
    标题
    值。以下是指向要更详细查看的表代码段的链接:


    因此,最终在这个示例中,用户将键入
    246802
    ,过滤出的结果将是
    Fred的帐户

    听起来像是在同一张桌子上?是否有任何鉴别器告诉您
    name
    是否包含
    accountnumber
    accountname

    在任何情况下,根据以下假设,您可以尝试丑陋的自连接:

  • 只有两条记录具有您想要的记录ID
  • 同一个表中的多个列在不明确的列名中包含不同的信息
  • 没有更好的方法来区分记录类型
  • 如果是这样的话,像这样的自连接应该可以让您开始:

    SELECT t2.name as accountnumber from example_table as t1
    INNER JOIN example_table as t2 on t1.recordID=t2.recordID
    WHERE t1.name='$accountname'
    
    编辑注意-如果我的假设是正确的,如果这是您继承的数据,我会同情您,您应该寻求改进其结构。如果你是这样设计的,你可能想先考虑一下

    编辑2

    您可能希望在
    name
    列上放置一个索引(这是我根据您的示例使用的鉴别器)

    您的查询可以是这样的:

    SELECT t1.value as accountnumber,t2.value as accountName from example_table as t1
    INNER JOIN example_table as t2 on t1.record=t2.record
    WHERE t1.name='accountNumber' and t2.name='accountName'
    

    请参阅此SQL文档:

    阅读有关连接的信息。如果你花一点时间学习sql的基础知识,你的问题的答案会非常简单。@Colleen我想他可能会问一些稍微复杂一点的问题,但这个问题需要进一步研究才能确定。@Matthew yeah,我假设相同的表名是一个拼写错误或两个不同表的含义,从措辞上看,这些项目都在同一张表中是正确的。谢谢你的详尽答复。我将对你的答案做一些研究,了解更多关于
    JOIN
    internaljoin
    的信息,然后回来更新。上面你问:是否有任何识别器来告诉你name是包含accountnumber还是accountname?是的,可用的最佳鉴别器似乎是
    标题
    值。这里有一个指向表片段的链接,可以更详细地查看:因此,最终在本示例中,用户将键入
    246802
    ,过滤掉的结果将是
    Fred的帐户。再次感谢。另一个注意事项是,我正在一个web应用程序的预定义表结构中工作。客户要求在提供的结构内工作,因此我避免任何表格重新设计。更新以回答您的问题