У меня очень простая PHP-форма, которая показывает флажок и будет храниться, если она проверена или нет в базе данных. Это работает для первоначальной вставки, но не для обновления. Я тестировал случаи, когда $ saleid равен $ pk, и он не вводит ветку if для обновления … почему?
<?php error_reporting(E_ALL); if (isset($_GET["cmd"])) $cmd = $_GET["cmd"]; else if (isset($_POST["cmd"])) $cmd = $_POST["cmd"]; else die("Invalid URL"); if (isset($_GET["pk"])) { $pk = $_GET["pk"]; } $checkfield = ""; $checkboxes = (isset($_POST['checkboxes'])? $_POST['checkboxes'] : array()); if (in_array('field', $checkboxes)) $checkfield = 'checked'; $con = mysqli_connect("localhost","user","", "db"); if (!$con) { echo "Can't connect to MySQL Server. Errorcode: %s\n". mysqli_connect_error(); exit; } $con->set_charset("utf8"); $getformdata = $con->query("select saleid, field from STATUS where saleid = '$pk'"); $saleid = ""; while ($row = mysqli_fetch_assoc($getformdata)) { $saleid = $row['saleid']; $checkfield = $row['field']; } if($cmd=="submitinfo") { if ($saleid == null) { $statusQuery = "INSERT INTO STATUS VALUES (?, ?)"; if ($statusInfo = $con->prepare($statusQuery)) { $statusInfo->bind_param("sssssssssssss", $pk, $checkfield); $statusInfo->execute(); $statusInfo->close(); } else { print_r($con->error); } } else if ($saleid == $pk) { $blah = "what"; $statusQuery = "UPDATE STATUS SET field = ? WHERE saleid = ?"; if ($statusInfo = $con->prepare($statusQuery)) { $statusInfo->bind_param("ss", $checkfield, $pk); $statusInfo->execute(); $statusInfo->close(); } else { print_r($con->error); } } } if($cmd=="EditStatusData") { echo "<form name=\"statusForm\" action=\"test.php?pk=".$pk."\" method=\"post\" enctype=\"multipart/form-data\"> <h1>Editing information for Auction No: ".$pk."</h1> <input type=\"checkbox\" name=\"checkboxes[]\" value=\"field\" ".$checkfield." /> <label for=\"field\">Test</label> <br /> <input type=\"hidden\" name=\"cmd\" value=\"submitinfo\" /> <input name=\"Submit\" type=\"submit\" value=\"submit\" /> </form>"; } ?>