【发布时间】:2017-12-20 07:19:06
【问题描述】:
所以我可能只是忽略了一些愚蠢的简单事情,但本质上我正在尝试通过 PHP 页面在 MySQL 中为 UPDATE 设置字段。我也运行了大量的 IF 语句,但似乎无法使其正常工作。
<?php
include('config.php');
$username = $_POST['username'];
$charName = $_POST['charName'];
//ID MARKS
$idMarks = $_POST['IDmarks'];
//EXPERIENCE
$EXP = $_POST['EXP'];
$sql = "UPDATE characters
SET CASE
WHEN idMarks1 IS NULL THEN idMarks1 = '$idMarks'
WHEN idMarks2 IS NULL THEN idMarks2 = '$idMarks'
WHEN idMarks3 IS NULL THEN idMarks3 = '$idMarks'
WHEN idMarks4 IS NULL THEN idMarks4 = '$idMarks'
WHEN idMarks5 IS NULL THEN idMarks5 = '$idMarks'
WHEN idMarks6 IS NULL THEN idMarks6 = '$idMarks'
WHEN idMarks7 IS NULL THEN idMarks7 = '$idMarks'
WHEN idMarks8 IS NULL THEN idMarks8 = '$idMarks'
WHEN idMarks9 IS NULL THEN idMarks9 = '$idMarks'
WHEN idMarks10 IS NULL THEN idMarks10 = '$idMarks'
WHEN idMarks11 IS NULL THEN idMarks11 = '$idMarks'
WHEN idMarks12 IS NULL THEN idMarks12 = '$idMarks'
END
totalEXP = totalEXP + '$EXP',
remEXP = remEXP + '$EXP'
WHERE charName = '$charName' AND username = '$username';
";
if ($conn->query($sql) === TRUE) {
header("Location: ../lead.php");
} else {
echo "Error updating record: " . $conn->error;
}
?>
这里的想法是更新会将新值 ($idMarks) 放在它找到的第一个空值中,然后滚动到下一个 EXP 列。由于我之前在 MySQL 上遇到的问题,我不能只使用一个数组,关键是 idMarks 列是一种流体,跟踪伤口,伤口愈合到疤痕或跛行,纹身是永久性的等等,这就是为什么它们是可调节的在另一页上。有人对如何实现这一点有任何想法吗?
【问题讨论】:
-
实际上在测试中工作得很好,它滚动到一个 int 字段,但在文本字段中输入,因此它可以在其他地方解析
-
从根本上说,这是一个糟糕的设计问题。每当您发现自己有枚举列时,警钟就应该开始响起。
-
好的,如果我只是删除了其他列,我如何将多个值存储在 idMarks 中的一行上?
-
您不会将它们存储在一行中。见规范化。
标签: php mysql sql-update case field