我是新的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>
&#13;
此代码的奇怪之处在于if ($sql_2 == "0")
导致复选框保持未选中状态,但将0更改为1,if ($sql_2 == "1")
会导致复选框保持选中状态。无论数据库显示什么结果,两种结果都无关紧要。
我知道所有其他代码都有用,因为当我选中复选框并提交时,它会更新数据库并正确显示(反之亦然)。
如果有人知道if ($sql_2 == "0")
无效的原因,请告知我们。我甚至检查了其他堆栈溢出帖子,据我所知,所有内容都应该正确编码。
编辑:
我应该说在上面的问题中,将=更改为==或撤销订单并不能解决问题。 if语句仍然只返回else语句。
我已完成其他研究,并认为该问题与使用mysqli_query
检索数据有关,因为它应该是mysqli_fetch_row
。
答案 0 :(得分:2)
if ($sql_2 = "0")
会将$ sql2的值设为'0',此条件将始终为真
将其更改为
if ($sql_2 == "0")
以防止意外分配,您可以执行以下操作
if ("0"==$sql_2)
答案 1 :(得分:0)
问题未解决
解决方案是在php中添加mysqli_data_seek()
,下面是工作代码。
<?php
include_once 'includes/dbh.inc.php';
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<?php
$sql_1 = "SELECT * FROM test2;";
$result_1 = 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($result_1, MYSQLI_ASSOC)) {
echo "<tr><td>";
echo $row['state'];
echo "</td><td>";
echo $row['id'];
echo "</td></tr>";
}
echo "</table>";
$query_1 = "SELECT state, id FROM test2 ORDER BY id";
$sql_3 = mysqli_query($conn, $query_1) or die('Error getting data.');
if ($result_2 = $sql_3) {
mysqli_data_seek($result_2, 0);
$row_1 = mysqli_fetch_row($result_2);
}
if ($result_3 = $sql_3) {
mysqli_data_seek($result_3, 1);
$row_2 = mysqli_fetch_row($result_3);
}
?>
<form action="includes/checkbox.inc.php" method="post">
<input type="hidden" name="checkbox1" value="0">
<input type="checkbox" name="checkbox1" value="1"
<?php
if ($row_1[0]=="1") {
echo "checked";
} else {
echo " ";
}
?>
> Item 1<br>
<input type="hidden" name="checkbox2" value="0">
<input type="checkbox" name="checkbox2" value="1"
<?php
if ($row_2[0]=="1") {
echo "checked";
} else {
echo " ";
}
?>
> 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>
<?php
mysqli_close($conn);
?>
</body>
</html>
&#13;