PHP if / else заявление действует странно

user8333623 спросил: 03 февраля 2018 в 12:02 в: php

Я относительная новизна к php и просто проверяю код. Странно, что код работает и не работает. Код должен проверить базу данных MySQLi, чтобы определить состояние этого флажка, а затем применить это состояние к флажку. То, что в настоящий момент делает код, обозначает состояние флажка, основанное исключительно на значении условия if, независимо от значений базы данных MySQLi.

Вот код для html-страницы, это утверждение if внизу это вызывает проблемы;

<?php
	include_once 'includes/dbh.inc.php';
?>

<!DOCTYPE html>
<html>
<head>
</head>
<body>

<?php

	$sql_1 = "SELECT * FROM test2;";
	$results = mysqli_query($conn, $sql_1) or die('Error getting data.');
	
	echo(string) "<table>";
	echo "<tr><th>state</th><th>id</th></tr>";
	
	while($row = mysqli_fetch_array($results, MYSQLI_ASSOC)) {
		echo "<tr><td>";
		echo $row['state'];
		echo "</td><td>";
		echo $row['id'];
		echo "</td></tr>";
		}
		
	echo "</table>";
?>

<form action="includes/checkbox.inc.php" method="post">
	<input type="hidden" name="checkbox1" value="0">
	<input type="checkbox" name="checkbox1" value="1"
	
<?php
	$sql_2 = mysqli_query($conn, "SELECT state FROM test2 WHERE id = '0'") or die('Error getting data.');
	if ($sql_2 == "0") {
      echo "checked";
   } else {
      echo " ";
   }
   mysqli_close($conn);	
?>	
	> Item 1<br>
	
	
	<input type="hidden" name="checkbox2" value="0">
	<input type="checkbox" name="checkbox2" value="1" checked> Item 2<br>
	<input type="submit" name="Submit" value="Submit">
</form>
<br>
<a href="http://localhost/testsite2.com/includes/update.inc.php">Reset</a><br>


</body>
</html>

Нечетная вещь в этом коде состоит в том, что результат if ($sql_2 == "0") флажок не установлен, но изменение 0 на 1, if ($sql_2 == "1") приводит к тому, что флажок остается включенным. Оба результата независимо от того, что показывает база данных.

Я знаю, что все остальные биты кода работают, потому что, когда я устанавливаю флажок и отправляю, он обновляет базу данных и отображает ее правильно (также верно обратное ).

Если кто-нибудь знает, почему if ($sql_2 == "0") не работает, сообщите мне. Я даже проверял проводки переполнения стека, и насколько я могу судить, все должно быть правильно закодировано.

Изменить:

Я должен был сказать, что в вышеупомянутом вопросе, изменение = на == или изменение порядка не устраняет проблему. Оператор if все еще возвращает оператор else.

Я провел дополнительные исследования и считаю, что проблема связана с использованием mysqli_query для извлечения данных, поскольку это может вероятно be mysqli_fetch_row.

0 ответов