Php 基于3个变量确定值的MySQL查询
我需要能够精确定位MySQL表中由两个变量定义的值 在网站的前端,有一个表单,可以接受各种字段。在本例中,让我们重点关注以下两个方面:Php 基于3个变量确定值的MySQL查询,php,mysql,sql,database,Php,Mysql,Sql,Database,我需要能够精确定位MySQL表中由两个变量定义的值 在网站的前端,有一个表单,可以接受各种字段。在本例中,让我们重点关注以下两个方面: 帐号 帐户名 我开发了一个脚本,它将使用ajax脚本在输入后检查“帐号”,如果找到匹配项,当用户从字段中签出时,它将显示“帐号” 困难在于从数据库表的格式中找到单个结果。例如: ”SELECT * FROM example_table WHERE name=’$accountnumber’” 提供等于帐号的所有值的列表,但不提供帐号的任何记录 “从示例_表中选
”SELECT * FROM example_table WHERE name=’$accountnumber’”
提供等于帐号的所有值的列表,但不提供帐号的任何记录
“从示例_表中选择*,其中name='$accountname'
提供与帐户名相等的所有值的列表,但不提供帐户号的任何记录
$record
值是$accountnumber
和$accountname
之间唯一的公共线程
总之,我需要帮助创建循环,该循环可以首先获取$accountnumber
值,以查找与该数字关联的$record
值。其次,它将获取确定的$record
值,并将其与$accountname
值匹配。每个唯一的$record
值只有一个$accountnumber
和$accountname
值
更新:关于这个问题有好几条评论。为了提供更多背景信息,只有一个表。可用的最佳鉴别器似乎是
标题
值。以下是指向要更详细查看的表代码段的链接:
因此,最终在这个示例中,用户将键入
246802
,过滤出的结果将是Fred的帐户
听起来像是在同一张桌子上?是否有任何鉴别器告诉您name
是否包含accountnumber
或accountname
在任何情况下,根据以下假设,您可以尝试丑陋的自连接:
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应用程序的预定义表结构中工作。客户要求在提供的结构内工作,因此我避免任何表格重新设计。更新以回答您的问题