标准化表中的PHP和MySQL

时间:2013-07-20 17:44:00

标签: php mysql sql database-normalization

我有3张桌子。

表目录:
id |业务

表类别:
id |类

第三个表将业务ID与类别ID匹配 table cat2dir:
id | catID | DIRID

第一页显示了类别列表。单击一个类别时,它会将URL上的ID发送到下一页。下一页我想显示该类别的业务列表。

编写PHP的正确方法是什么?

<?php
include 'config.php'; // mysql connection

function Getdir($dirId){
    $a = $_GET['id'];
    $result = mysql_query("SELECT dirID FROM 'cat2dir' WHERE 'catID'= '$a'");
    return $return;

}

$sql = "select *" .
        "from directory " .
        "where id = '$Getdir()'";

2 个答案:

答案 0 :(得分:0)

首先,您可以合并此查询。

SELECT * FROM directory WHERE id IN(SELECT dirID FROM cat2dir WHERE catID = $a

进一步发展的一些提示:

  • 不使用$_GET - 变量而不检查
  • 使用mysqli或PDO代替mysql,弃用
  • 请记住,mysql_query并未返回可用值,您应准备好进一步使用。您的函数返回不是dirID

答案 1 :(得分:0)

SELECT 
  dir.id, dir.business
FROM
  directory AS dir
INNER JOIN
  cat2dir AS cat 
ON 
  cat.dirID = dir.id 
AND 
  cat.catID = <?php echo $_GET['category_id']; ?>

确保对$_GET值执行必要的卫生以防止SQL注入