答案 0 :(得分:0)
可能这个:
if ($_GET['newdata'] != "null") {
^----^
除非您传入example.com?newdata=null
,否则您没有测试该查询值是否为实际的空(未知)值,而是在测试包含字母n
的字符串,u
,l
和l
。
请注意以下事项:
php > var_dump(null == 'null');
bool(false)
由于实际的null不等于字符串null,因此您将盲目地重置会话变量。如果newdata
查询参数不存在,那么您实际上将会话变量设置为实际的空值。
你可能想要更像的东西:
if(isset($_GET['newdata'])) {
$_SESSION['P_ID'] = $_GET['newdata'];
}
答案 1 :(得分:0)
好的,所以我实际上设法奇怪地解决了我自己的问题。赔率是多少? :)
拿这段代码:
if ($_GET['newdata'] != "null") {
$_SESSION['P_ID'] = $_GET['newdata'];
}
if (($_POST['date'] != "") and ($_POST['org'] != "") and ($_POST['imgno'] != "") and ($_POST['res'] != "") and ($_POST['pid'] != "")) {
$date = $_POST['date'];
$org = $_POST['org'];
$imgno = $_POST['imgno'];
$res = $_POST['res'];
$pid = $_POST['pid'];
$dsquery = "INSERT INTO Datasets (ProjectDate, Organism, ImageNumber, Resolution, ProjectID) VALUES ('$date', '$org', '$imgno', '$res', '$pid')";
mysqli_query($db, $dsquery);
}
考虑到当前的ProjectID与if语句一起发布,我修改了代码如下:
if (isset($_POST['pid'])) {
$_SESSION['P_ID'] = $_POST['pid'];
}
else{
$_SESSION['P_ID'] = $_GET['newdata'];
}
这样可以使输出保持相同的页面,不再取消设置变量。对不起StackOverflow人员,感谢@Marc B的投入。