我想创建用于编辑表格的函数。
但我有更多的表单转到相同的PHP页面,所以当发送提交时,我在URL中发送一个参数,如php/edit.php?id=website
,在PHP代码中,我想检查URL中的ID,以便功能执行。
这是PHP代码,我尝试确认ID
然后执行函数
<?php
if(isset($_POST["submit"]) && isset($_GET['id']) == "website" {
include('config.php');
$sql2 = "UPDATE tblWebsite SET websiteNaam='".$_POST["websitenaam"]."' WHERE websiteId=".$_POST["websiteid"]."";
if($db->query($sql2) === TRUE) {
header('Location: /bvdo/pages.php');
} else {
echo "<script type= 'text/javascript'>alert('Error: " . $sql2 . "<br>" . $db->error."');</script>";
}
}
?>
很好地注意到该函数正在运行,因为如果删除&& isset($_GET['id']) == "website"
数据库正在使用新值进行更新。
答案 0 :(得分:1)
您无法将isset和比较结合起来。此外,您在if语句中缺少结束括号。您可能想要的是:
if(isset($_POST["submit"]) && isset($_GET['id']) && $_GET['id'] == "website") {
// Do something
}
<强>解释强>
使用isset($var)
检查变量$var
是否已在任何位置初始化(如果已设置)。如果设置了变量,则isset返回true,否则返回false。所以你有效地比较的是true == "website"
,显然情况并非如此。
使用$var2 == "a string"
检查您的$var
是否等于字符串。
你不能混淆它们,但要逐一检查。
答案 1 :(得分:0)
不是为代码添加复杂功能,为什么不分割将id保存到隐藏的输入中,并将其与$ _POST [&#39; id&#39;]一起使用。
if(isset($_POST["submit"]) && isset($_POST['id']) == "website" {
include('config.php');
$sql2 = "UPDATE tblWebsite SET websiteNaam='".$_POST["websitenaam"]."' WHERE websiteId=".$_POST["websiteid"]."";
if($db->query($sql2) === TRUE) {
header('Location: /bvdo/pages.php');
} else {
echo "<script type= 'text/javascript'>alert('Error: " . $sql2 . "<br>" . $db->error."');</script>";
}
}
现在无需担心URL参数。
答案 2 :(得分:0)
清理代码的另一种方法是使用检查值是否已设置的函数。你可以通过检查 If function == your value 来单独完成。
function getValue($id) {
if (!isset($_GET[$id])) {
return false;
}
return $_GET[$id];
}
if (getValue('id') == 'website') {
include('config.php');
$sql2 = "UPDATE tblWebsite SET websiteNaam='".$_POST["websitenaam"]."'
WHERE websiteId=".$_POST["websiteid"]."";
if($db->query($sql2) === TRUE) {
header('Location: /bvdo/pages.php');
} else {
echo "<script type= 'text/javascript'>alert('Error: " . $sql2 . "<br>"
. $db->error."');</script>";
}
}
}
或
如果您正在寻找一个单行检查变量的值,您还不确定是否已设置,这可行:
if ((isset($variable) ? $variable : null) === $value) { }
唯一可能的缺点是,如果您正在测试true
/ false
- null
将被解释为等于false
。