Этот вопрос начинался как другая тема, но после долгих поисков и сужения проблемы он довольно существенно изменился, и поэтому я подумал, что может быть уместно начать новый вопрос по ссылке на старый, который :
Переменная конкатенированная строка запроса mysql работает нормально в phpMyAdmin, но не в PHP в скрипте
Я не считаю, что описание больше подходит, так как конкатенация работает нормально.
Кажется, я нахожусь в проблеме. У меня есть простая форма:
<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']) . '" ';
}
?>
Когда я выбираю флажок, все операторы echo работают отлично и отображают на экране все записи, где GFOption = "1". Но когда я просматриваю исходный код страницы, все записи отражаются там. Это, однако, относится ко всему, что у меня есть в операторе else условия if. Если флажок установлен или не отмечен, все, что у меня есть в операторе else, выполняется, и если есть вывод, оно выводится на страницу. источник.
Еще одна интересная вещь заключается в том, что если я жестко закодирую свое условное выражение в
if (true)
или
if (false)
операторы работают точно так, как должны, и никакой странной печати исходной страницы не происходит.
Если я сделаю
var_dump(isset($_POST['GFCheckbox'])
Я получаю правильные логические значения в зависимости от того, установлен флажок GFCheckbox или нет.
Как видите, я бегаю по кругу с этим и буду очень признателен за любую помощь.