使用事务从多个表中获取数据

时间:2015-09-19 13:30:19

标签: php mysql

我有2个MySQL表:

  • 候选人:uniqid,年龄,性别等。
  • job:candidate_uniqid,application_date,contacts_by等

我想为显示来自 候选人和工作表的信息的每位候选人建立个人资料。每个候选人可以有多个工作条目。

这是我正在做的事情:

<?php
    if (isset($_GET['uniqid'])) {
        $uniqid = $_GET['uniqid'];
    }
        $queryCandidate = "SELECT * FROM candidate WHERE uniqid = '{$uniqid}'";
        $queryJob = "SELECT * FROM job WHERE candidate_uniqid = '{$uniqid}'";

        mysqli_begin_transaction($conn, MYSQLI_TRANS_START_READ_ONLY);
        $resultCandidate = mysqli_query($conn, $queryCandidate);
        $resultJob = mysqli_query($conn, $queryJob);
        mysqli_commit($conn);

        $rowCandidate = mysqli_fetch_assoc($resultCandidate);

        while($rowJob = mysqli_fetch_assoc($resultJob)){
            // echo $rowJob['some_value'] . '<br>';
            // display data from job table until there is nothing left to fetch
        }

        // display data from candidate table
        //echo $rowCandidate['candidate_name'] . '<br>';
        //echo $rowCandidate['phone'] . '<br>';    
?>

我的问题是:

  1. 我是否正确使用了MySQL事务?
  2. 我根据$_GET['uniqid']获得的变量获取数据。这样做时我应该记住哪些安全措施?
  3. 非常感谢!

1 个答案:

答案 0 :(得分:0)

您应该使用SQL INNER JOIN

执行此操作
Rails.root.join('grandparent_dir', 'parent_dir', 'file.txt')

INNER JOIN是一个关键字,它根据每个表中具有相同值的一个(或多个)列来连接2个表,显示所有可能的组合。

以下是使用INNER JOIN的可能结果:

example of an table got with the inner join

正如您可能已经注意到的那样,我还添加了SELECT c.* , j.* FROM candidate AS c INNER JOIN job AS j ON c.uniqid = j.candidate_uniqid WHERE uniqid = @u 而不是@u。这是我使用的一种保护,它就像SQL中的一个变量,必须在主查询之前的一个查询中设置。完整代码如下:

$uniqid

如果您(或其他任何人)需要进一步解释,请询问!