gpt4 book ai didi

php - 基于 if/else 条件插入数据的半功能

转载 作者:可可西里 更新时间:2023-11-01 08:44:47 25 4
gpt4 key购买 nike

我有一个名为“editedworkhours”的表,最初是空的。我根据 if/else 条件向其中插入 addedwh 和 idnumber。这样:如果addedwh为空(然后插入)else(更新,因为已经有值了)。现在更新部分运行良好(因为我在数据库的表中手动添加值以尝试更新)。但是,如果表中不存在 idnumber(即 id),则不会发生插入。关于可能阻止 if/else 条件准确运行的任何建议?

if(isset($_POST['submit']))
{
$addedhours = $_POST['AddedHours'];
$selectid = $_POST['SelectID'];
$sql1="SELECT addedwh FROM editedworkhours WHERE idnumber='$row[0]'";
$getResult = mysql_query($sql1);
$count = count($getResult);
if(empty($count))
{
$sql="INSERT INTO editedworkhours (IDNumber,AddedWH) VALUES('$selectid','$addedhours')";
}
else
{
$tempname = $row['Field'];
$sql2 = "UPDATE editedworkhours SET AddedWH = AddedWH +'$addedhours' WHERE IDNumber='$selectid'";
$result2 = mysql_query($sql2);

if (isset($result2))
{

}
else
{

echo '<script>swal("Error", "Something went wrong error");</script>';
}

}


}

echo $menu;

最佳答案

我会删除条件并简单地执行 INSERT ... ON DUPLICATE KEY UPDATE ... 查询。这将允许您消除初始 SELECT 查询以确定记录是否存在。

INSERT INTO editedworkhours (IDNumber,AddedWH)
VALUES($selectid, $addedhours)
ON DUPLICATE KEY UPDATE AddedWH = AddedWH + $addedhours

这需要在 IDNumber 上有一个唯一(或主键)索引。

您可以在执行查询后检查 mysql_affected_rows() 值以确定是否发生了插入或更新。对于插入,返回值为 1。对于更新,返回值为 2。

请注意,我还删除了插入内容周围的字符串分隔符,因为我假设您在这两种情况下都有 INT 类型字段。

把它放在一起可能看起来像这样:

if(isset($_POST['submit'])) {
// validate user input as integer value string
$addedhours = filter_var($_POST['AddedHours'], FILTER_VALIDATE_INT);
$selectid = filter_var($_POST['SelectID'], FILTER_VALIDATE_INT);

if($addedhours === false || $selectid === false) {
// input was bad
// perhaps do some error messaging here
die('Bad input');
}

// both filters passed
// prepare variables for insert/update
$addedhours = mysql_real_escape_string($addedhours);
$selectid = mysql_real_escape_string($selectid);

// form query
$sql = "INSERT INTO editedworkhours (IDNumber,AddedWH)
VALUES($selectid, $addedhours)
ON DUPLICATE KEY UPDATE AddedWH = AddedWH + $addedhours";

// execute
$result = mysql_query($sql);
if(true === $result) {
// the query worked
// determine if insert or update was performed
// maybe present have different logic based on insert vs. update
if(mysql_affected_rows() === 1) {
// an insert occurred
} else {
// an update occurred
}
} else {
echo '<script>swal("Error", "Something went wrong error");</script>';
}
}

您应该注意您在评论中获得的建议,并考虑将 MySQLi 或 PDO 与参数化准备语句结合使用。为了与您当前的使用保持一致,我确实展示了使用 mysql 的代码示例。

关于php - 基于 if/else 条件插入数据的半功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31787268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com