如何在php中读取具有复合(多列)主键的记录
我正在开发一个数据库应用程序。我在用php处理一个表时遇到了麻烦,因为它使用两列作为主键。我已经建立了索引页面和插入页面,它们工作正常,但删除、编辑和详细信息页面出现了问题。 下面是详细信息页面的html如何在php中读取具有复合(多列)主键的记录,php,mysql,Php,Mysql,我正在开发一个数据库应用程序。我在用php处理一个表时遇到了麻烦,因为它使用两列作为主键。我已经建立了索引页面和插入页面,它们工作正常,但删除、编辑和详细信息页面出现了问题。 下面是详细信息页面的html 章节详情 第号法令: 章节编号: 下面是php代码 <?php require '../../AppData/database.php'; $id = null; if ( !empty($_GET['ActNo'])) { $id = $_REQUEST['
章节详情
第号法令:
章节编号:
下面是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没有太多经验,我认为这就是问题所在。请看一看,告诉我出了什么问题以及如何解决 好的,我找到问题了。这是修改后的代码
<?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();
}
?>
警告:
如果(空==$id | |空==$sec)
。因为我认为如果其中一个丢失了,你应该重新定向。也可以在last else块中回显$id和$sec变量吗?我不明白为什么要在last else块中回显它。这段代码以前使用单列键对我有效。但是现在它不起作用了。为你的新问题创建一个新问题。
<?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();
}
?>
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");
}
?>