这个问题从一个不同的线程开始,但经过大量搜索和缩小问题范围后,它已经发生了相当大的变化,因此我认为开始一个新问题可能与返回旧问题的链接相关:
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('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('"','"',$xmlStr);
$xmlStr=str_replace("'",''',$xmlStr);
$xmlStr=str_replace("&",'&',$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/