因此,用户从下拉列表中选择一个值。我将这个值放入一个变量中,然后从数据库中选择包含所选值的表A的ID值。
因此,现在我尝试使用该ID值来获取一个多对多关系表,该表具有从表A到另一个表B的选定值。多对多关系表具有这两个ID。我怎么用PHP来比较呢?
所以它会是这样的:
$A = $_POST['a'];
$sql = "SELECT a, aID from TABLEA WHERE a = $A";然后,我该如何将aID与多对多关系表进行比较,然后获取该表中的另一个ID,然后从表B获取该ID的值?
发布于 2011-01-30 23:24:59
您可以在SQL中使用join来完成此操作:
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中,这是如何做到这一点的(无业务逻辑):
<?
// 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
}
?>发布于 2011-01-31 00:01:38
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备注:
A(就像Coreyward那样)来区分sql和
*’如果不需要很多列,您可以使用JOIN而不是
https://stackoverflow.com/questions/4843637
复制相似问题