php - $_POST 问题,如果 isset() 和 mysql_fetch_assoc() : echo returns correct value, 页面源总是返回 else 值

标签 php mysql forms post

这个问题从一个不同的线程开始,但经过大量搜索和缩小问题范围后,它已经发生了相当大的变化,因此我认为开始一个新问题可能与返回旧问题的链接相关:

Variable concatenated mysql query string runs fine in phpMyAdmin but not PHP in script

我认为描述不够充分,因为串联工作正常。

看来我确实在解决这个问题。我有一个简单的表格:

<head>
</head>
<body>
  <form method = "post" name = "testform" action = "testgenxml.php" >
    <input type = "checkbox" name = "GFCheckbox">
    <input type = "submit" value="Submit">
  </form>
</body>
</html>

然后我有一个 PHP 函数来检查是否选择了 GFCheckbox。如果是某个字符串,则传递给 $query 值。如果不是,则将一个不同的字符串传递给 $query 值。这是 PHP 函数。

<?php

function parseToXML($htmlStr) 
{ 
$xmlStr=str_replace('<','&lt;',$htmlStr); 
$xmlStr=str_replace('>','&gt;',$xmlStr); 
$xmlStr=str_replace('"','&quot;',$xmlStr); 
$xmlStr=str_replace("'",'&#39;',$xmlStr); 
$xmlStr=str_replace("&",'&amp;',$xmlStr);
return $xmlStr;
} 

$query = "";

if (isset($_POST['GFCheckbox'])) {
  $query = 'SELECT * FROM fdatav1 f INNER JOIN ddatav1 d USING(ID) WHERE (GFOption = "1")';

} else {
  $query = 'SELECT * FROM fdatav1 f INNER JOIN ddatav1 d USING(ID)';
}

$connection = mysql_connect(localhost, $username, $password);
if (!$connection) {
  die('Not connected : ' . mysql_error());
}

$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
}

$result = mysql_query($query);
if (!$result) {
  die('Invalid query: ' . mysql_error());
}

  while ($row = @mysql_fetch_assoc($result)){

    echo 'accname="' . parseToXML($row['accname']) . '" ';
    echo 'description="' . parseToXML($row['description']) . '" ';
    echo 'venue="' . parseToXML($row['venue']) . '" ';
    echo 'activity="' . parseToXML($row['activity']) . '" ';
  }
?>

当我选中该复选框时,所有回显语句都能正常工作并在屏幕上显示 GFOption = "1"的所有记录。但是当我查看页面源时,所有记录都在那里回显。 然而,这特定于我在 if 条件的 else 语句中的任何内容。如果复选框被选中或未选中,则我在 else 语句中的任何内容都会执行,如果有输出,它将打印到页面源。

另一件有趣的事情是,如果我将 if 条件语句硬编码为

if (true)

if (false)

这些语句完全按照它们应有的方式工作,并且没有发生奇怪的页面源打印。

如果我这样做

var_dump(isset($_POST['GFCheckbox'])

根据是否选中 GFCheckbox,我得到正确的 bool 值。

如您所见,我正在为此兜圈子,非常感谢任何帮助。

最佳答案

您似乎仍在检查 isset(),即使问题不是它是否已设置,而是它是真还是假。当您将变量检查为 bool 值时,PHP 会处理很多事情,但是对 包含 false 的集合变量的 isset() 仍将返回 true。

尝试交易

if (isset($_POST['GFCheckbox']))

对于

if ($_POST['GFCheckbox'])

看看会发生什么。

关于php - $_POST 问题,如果 isset() 和 mysql_fetch_assoc() : echo returns correct value, 页面源总是返回 else 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5694674/

相关文章:

php - 作为页面发布到 Facebook 页面墙

php - JavaScript 中的 href

php - 我想插入来自其他表的 id 但我的查询有问题

mySQL 有效位 - 替代方案?

java - Hibernate MySQL 查找未映射的表和列

mysql - 将 MySQL 键列转换为 FOREIGN 列后,站点速度变慢

密码的javascript验证问题

php - 如何在 Ubuntu 上安装 Phar?

forms - 如何为具有 gin(框架)和 golang 接口(interface)的表单制作通用表单函数?

css - 在网页上制作表格样式的信息展示