首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP中比较这些数据库值?

如何在PHP中比较这些数据库值?
EN

Stack Overflow用户
提问于 2011-01-30 23:19:04
回答 2查看 2K关注 0票数 0

因此,用户从下拉列表中选择一个值。我将这个值放入一个变量中,然后从数据库中选择包含所选值的表A的ID值。

因此,现在我尝试使用该ID值来获取一个多对多关系表,该表具有从表A到另一个表B的选定值。多对多关系表具有这两个ID。我怎么用PHP来比较呢?

所以它会是这样的:

代码语言:javascript
复制
$A = $_POST['a'];
$sql = "SELECT a, aID from TABLEA WHERE a = $A";

然后,我该如何将aID与多对多关系表进行比较,然后获取该表中的另一个ID,然后从表B获取该ID的值?

EN

回答 2

Stack Overflow用户

发布于 2011-01-30 23:24:59

您可以在SQL中使用join来完成此操作:

代码语言:javascript
复制
SELECT table_b.* FROM ab_association
LEFT JOIN table_b ON table_b.id = ab_association.b_id
WHERE ab_association.a_id = $specified_id;

这假设您的多对多连接表名为ab_association,并且有两列,一列名为a_id,对应于table_a.id,另一列名为b_id,对应于table_b.id

更新:我删除了表名别名,因为它们似乎让您感到困惑。

另一个更新:在PHP中,这是如何做到这一点的(无业务逻辑):

代码语言:javascript
复制
<?

// connect to db here
$a_id = mysql_real_escape_string($_POST['a_id']);
$result = mysql_query("SELECT table_b.* FROM ab_association LEFT JOIN table_b ON table_b.id = ab_association.b_id WHERE ab_association.a_id = $a_id;");

// in your view/template
while(false !== (mysql_fetch_object($result))) {
  // build your output for each row
}

?>
票数 1
EN

Stack Overflow用户

发布于 2011-01-31 00:01:38

代码语言:javascript
复制
SELECT * 
FROM table_a 
LEFT JOIN ab_association ON table_a.aID = ab_association.aID
LEFT JOIN table_b ON table_b.bID = ab_association.bID
WHERE table_a.a = $A

备注:

  • 我在表名中使用了一些下划线,所以table_a而不是

A(就像Coreyward那样)来区分sql和

  • ,您应该指定所需的列,而不是‘

*’如果不需要很多列,您可以使用JOIN而不是

  • ,如果您想在多对多中找不到匹配的情况下获得一个空记录集,则可以使用JOIN而不是LEFT JOIN。(使用左连接的优点是您仍然可以访问table_A中的列)
  • 在查询中直接使用$_POST-vars永远不是明智之举,这是一个严重的安全风险(SQL注入)。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4843637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档