php - php 和 sql 选择 case -> 只保存部分值
问题描述
我不能给我的问题一个名字,所以我真的不知道有两个表标识和标签我希望能够通过基于 php 的网页输入所有值,如果我也应该在表中给出所有值用 cmdline 做所有事情,它工作正常:
insert into tag (chipnr1,chipnr2,ringing_tel) values ("","3","3");
insert into identification (name, species_nr, sex_nr, tag_nr)
values ("test3",
(select species_nr from species where sp_term="Hund"),
(select sex_nr from sex where sx_term="weiblich"),
(select case
when exists (select tag_nr from tag where chipnr1="")
then (select tag_nr from tag where chipnr2="3")
else 'NULL'
end
)
);
如果我用 php 来做,它只会保存标签中的值,而不是标识中的值
if(isset($_GET['eingabe'])) {
try{
// Statement einfügen
$sql = "insert into tag (chipnr1,chipnr2,ringing_tel) values ((:chipnr1),(:chipnr2),(:ringing_tel));
insert into identification (name, species_nr, date_of_birth, sex_nr, breed, color, hair_nr, characteristics, tag_nr)
values (
(:name),
(select species_nr from species where sp_term=(:sp_term)),
(:date_of_birth),
(select sex_nr from sex where sx_term=(:sx_term)),
(:breed),
(:color),
(select hair_nr from hair where h_term=(:h_term)),
(:characteristics),
(select case
when exists (select tag_nr from tag where chipnr1=(:chipnr1))
then (select tag_nr from tag where chipnr2=(:chipnr2))
else 'NULL'
end))
)";
$stmt = $pdo->prepare($sql);
$stmt->bindParam(':name', $_REQUEST['name']);
$stmt->bindParam(':sp_term', $_REQUEST['sp_term']);
$stmt->bindParam(':date_of_birth', $_REQUEST['date_of_birth']);
$stmt->bindParam(':sx_term', $_REQUEST['sx_term']);
$stmt->bindParam(':breed', $_REQUEST['breed']);
$stmt->bindParam(':color', $_REQUEST['color']);
$stmt->bindParam(':h_term', $_REQUEST['h_term']);
$stmt->bindParam(':characteristics', $_REQUEST['characteristics']);
$stmt->bindParam(':chipnr1', $_REQUEST['chipnr1']);
$stmt->bindParam(':chipnr2', $_REQUEST['chipnr2']);
$stmt->bindParam(':ringing_tel', $_REQUEST['ringing_tel']);
$stmt->execute();
$res = $stmt;
if($res) {
echo '<p align=center><h1>Tier erfolgreich hinzugefügt <meta http-equiv="refresh" content="3;URL=eingabe_tier.php"></h1></p>';
$showFormular = false ;
}
else {
echo 'Das Hinzufügen eines neuen Datensatzes ist fehlgeschlagen';
}
echo "Tier erfolgreich hinzugefügt";
} catch(PDOException $e){
die("ERROR: Could not able to execute $sql. " . $e->getMessage());
}
我将不胜感激任何建议
解决方案
推荐阅读
- python - 过滤二维数组/列表并替换python中的值
- javascript - Javascript循环和对象创建
- wordpress - Wordpress 菜单中的相对 URL
- excel - Vlookup 搜索栏
- mysql - 有没有办法在这个 MYSQL 查询中找到总和和累积计数?
- laravel - 使用 firstOrCreate 创建后的“SOLVED”对象在 php 中具有 0 作为 Id,在 DB 中具有正确的 id
- sql-server - 使用 DDL 触发器防止 CREATE 或 DROP DEFAULT CONSTRAINT - SQL Server 2017
- html - 包含来自数据库的数据的侧菜单栏
- mongodb - 使用值优先级的 MongoDB 查询
- python - 在按元素索引时交换两个数组元素的奇怪行为