如何在具有复合(多列)主键的php中读取记录

时间:2014-06-23 01:07:34

标签: php mysql

我正在研究数据库应用程序。我在处理php中的表时遇到问题它使用两列作为主键。我已经构建了索引页面和插入页面,它们工作正常,但删除,编辑和详细信息页面给出了麻烦。 这是详细信息页面的html

    

            <div class="span10 offset1">
                <div class="row">
                    <h3>Section Details</h3>
                </div>

                <div class="form-horizontal" >
                  <div class="control-group">
                    <label class="control-label">Act No :</label>
                    <div class="controls">
                        <label class="checkbox">
                            <?php echo $data['ActNo'];?>
                        </label>
                    </div>
                  </div>
                         <div class="control-group">
                    <label class="control-label">Section No :</label>
                    <div class="controls">
                        <label class="checkbox">
                            <?php echo $data['SectionNo'];?>
                        </label>
                    </div>
                  </div> 
                    <div class="form-actions">
                      <a class="btn" href="index.php">Back</a>
                   </div>
                </div>
            </div>

</div> <!-- /container -->

这是PHP代码

   <?php

require '../../AppData/database.php';
$id = null; 
if ( !empty($_GET['ActNo'])) {
    $id = $_REQUEST['ActNo'];
}
$sec = null;
if ( !empty($_GET['SectionNo'])) {
    $id = $_REQUEST['SectionNo'];
}

if ( null==$id && null==$sec ) {
    header("Location: index.php");
} else {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SELECT * FROM section where ActNo = ? AND SectionNo= ?";
    $q = $pdo->prepare($sql);
    $q->execute(array($id, $sec));
    $data = $q->fetch(PDO::FETCH_ASSOC);
    Database::disconnect();
}
   ?>

单击索引页面上的详细信息链接时。数据通过url发送。我可以看到两个值都在url中正确发送,但它们不会在下一页中被收集。

我对POST和GET和REQUEST没有太多经验,我认为这就是问题出现的地方。请看看,告诉我有什么问题以及如何解决它。

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题。这是修改后的代码。

 <?php

require '../../AppData/database.php';
$id=null ; 
if ( !empty($_GET['ActNo'])) {
    $id = $_REQUEST['ActNo'];
}
$sec=null ;
if (  !empty($_GET['SectionNo'])) {
    $sec = $_REQUEST['SectionNo'];
}

if ( null==$id || null==$sec ) {
    header("Location: index.php");
} else {
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "SELECT * FROM section where ActNo = ? AND SectionNo= ?";
    $q = $pdo->prepare($sql);
    $q->execute(array($id, $sec));
    $data = $q->fetch(PDO::FETCH_ASSOC);
    Database::disconnect();
}
  ?> 

现在这个工作正常。我想在#10行有一个问题我输入$ id而不是$ $。秒。

现在有人可以帮我删除模块吗?这是代码..           

要求&#39; ../../ AppData / database.php&#39 ;;     $ id = 0;

if ( !empty($_GET['ActNo'])) {
    $id = $_REQUEST['ActNo'];
}
$sec = 0;
if ( !empty($_GET['SectionNo'])) {
    $sec = $_REQUEST['SectionNo'];
}

if ( !empty($_POST)) {
    // keep track post values
    $id = $_POST['ActNo'];
    $sec = $_POST['SectionNo'];

    // delete data
    $pdo = Database::connect();
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "DELETE FROM section  WHERE ActNo = ? AND SectionNo = ?";
    $q = $pdo->prepare($sql);
    $q->execute(array($id, $sec));
    Database::disconnect();
    header("Location: index.php");

}
   ?>