Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mysql中的日期字段未从php/html表单更新_Php_Mysql_Forms_Date_Post - Fatal编程技术网

mysql中的日期字段未从php/html表单更新

mysql中的日期字段未从php/html表单更新,php,mysql,forms,date,post,Php,Mysql,Forms,Date,Post,我用这个html表单来更新MySQL数据库中的值。在页面加载时,使用数据库中的现有数据填充表。 当我发出POST命令时,数据库中的所有字段都会更新,日期除外。我做错了什么 MySQL表: ---------------------------------------------------------------------------------- |# | Name | Type | Collation | Null | Default | E

我用这个html表单来更新MySQL数据库中的值。在页面加载时,使用数据库中的现有数据填充表。 当我发出POST命令时,数据库中的所有字段都会更新,日期除外。我做错了什么

MySQL表:

----------------------------------------------------------------------------------
|# | Name       | Type         | Collation       | Null | Default     | Extra    |
----------------------------------------------------------------------------------
|1 | ID         | int(11)      |                 | No   | none        | auto_inc |
|2 | username   | varchar(50)  | utf8_general_ci | No   | none        |          |
|3 | date       | date         |                 | No   | none        |          |
|4 | mission    | varchar(100) | utf8_general_ci | No   | none        |          |
|5 | transFrom  | varchar(100) | utf8_general_ci | No   | none        |          |
|6 | transpTo   | varchar(100) | utf8_general_ci | No   | none        |          |
|7 | payment    | varchar(100) | utf8_general_ci | No   | none        |          |
|8 | comment    | text         | utf8_general_ci | No   | none        |          |
|9 | created_at | datetime     |                 | Yes  | curnt_tstmp |          |
----------------------------------------------------------------------------------
表格:

<?php
 require_once("db.php");
 $arr = $conn->getMissionsId();
 $mission_id = isset($_GET['id']) ?  $_GET['id'] : '';

for($i=0; $i < count($arr); $i++) {
  if ($id = $mission_id && $arr[$i]['username'] == $_SESSION['username']) {
      $username = $arr[$i]['username'];
      $date = $arr[$i]['date'];
      $mission = $arr[$i]['mission'];
      $from = $arr[$i]['transpFrom'];
      $to = $arr[$i]['transpTo'];
      $payment = $arr[$i]['payment'];
      $comment = $arr[$i]['comment'];
  }
}

?>
<div class='newMissionForm'>
<form method='POST' action='?p=editMissionUpdate' enctype="multipart/form-data">
<div class='masterHeading'>Oppdater oppdrag</div>
<input type='hidden' name='id' id='id' class='inputClass' value='<?php echo $id ?>'>
<div class='form1'><label for='date' class='labelClass'>Dato</label><input type='date' name='date' id='date' class='inputClass' value='<?php echo $date ?>'></div>
<div class='form1'><label for='mission' class='labelClass'>Type oppdrag</label>
  <select class='form_control inputClass' id='mission' name='mission'>
    <option value=''>Velg oppdragstype</option>
    <option value='Vakt hverdag'<?php if ($mission == "Vakt hverdag") echo " selected='selected'"; ?>>Vakt hverdag</option>
    <option value='Vakt helg'<?php if ($mission == "Vakt helg") echo " selected='selected'"; ?>>Vakt helg</option>
    <option value='Vakt helgedag'<?php if ($mission == "Vakt helgedag") echo " selected='selected'"; ?>>Vakt helgedag</option>
    <option value='Vakt hel uke'<?php if ($mission == "Vakt hel uke") echo " selected='selected'"; ?>>Vakt hel uke</option>
    <option value='Vakt firedagers uke'<?php if ($mission == "Vakt firedagers uke") echo " selected='selected'"; ?>>Vakt firedagers uke</option>
    <option value='Tillegg helgedag'<?php if ($mission == "Tillegg helgedag") echo " selected='selected'"; ?>>Tillegg helgedag</option>
  </select>
  <div id='missionInfo1' class='<?php if ($mission !== 'Vakt hverdag') { echo ' none'; } ?> missionInfo'><?php infoVaktHverdag() ?></div>
  <div id='missionInfo2' class='<?php if ($mission !== 'Vakt helg') { echo ' none'; } ?> missionInfo'><?php infoVaktHelg() ?></div>
  <div id='missionInfo3' class='<?php if ($mission !== 'Vakt helgedag') { echo ' none'; } ?> missionInfo'><?php infoVaktHelgedag() ?></div>
  <div id='missionInfo4' class='<?php if ($mission !== 'Vakt hel uke') { echo ' none'; } ?> missionInfo'><?php infoVaktUke() ?></div>
  <div id='missionInfo5' class='<?php if ($mission !== 'Vakt firedagers uke') { echo ' none'; } ?> missionInfo'><?php infoVakt4dgUke() ?></div>
  <div id='missionInfo6' class='<?php if ($mission !== 'Tillegg helgedag') { echo ' none'; } ?> missionInfo'><?php infoTilleggHelg() ?></div>
</div>
<div class='form1'><label for='from' class='labelClass'>Transport fra</label><input type='text' name='from' id='from' class='inputClass' value='<?php echo $from ?>'></div>
<div class='form1'><label for='to' class='labelClass'>Transport til</label><input type='text' name='to' id='to' class='inputClass' value='<?php echo $to ?>'></div>
<div class='form1'><label for='payment' class='labelClass'>Lønn</label><input type='text' name='payment' id='payment' class='inputClass readonly' value='<?php echo $payment ?>' readonly></div>
<div class='form1'><label for='comment' class='labelClass'>Kommentar</label>
  <textarea name='comment' id='comment' class='inputClass2'><?php echo $comment ?></textarea></div>

<button type="submit" name="submit_form" class="btn btn-primary">Oppdater oppdrag</button>
</form>
<?php btnCancel(); ?>
</div>
发出POST命令时调用的文件(editMissionUpdate.php):


只需将$id=$mission\u id更改为$id=$arr[$i]['id']即可解决问题:)

我不知道出了什么问题,但我不喜欢您的
getmissionId()
方法。它获取一个数组而不是标识符。因此名称与其功能不匹配。此外,它还依赖于
$\u GET['id']
的存在,这是所讨论的标识符。所以它甚至没有“得到”它,它需要它。我将使用一个参数而不是超级全局的
$\u GET
,并将方法命名为
getMissionRow($missionId)。谢谢!我应该使用
$\u SESSION
传递参数吗?我无法回答这个问题,这需要我完全理解您的代码,我不需要。只是不要在类的方法中使用超级全局
$\u GET
。“为什么?”;你问?首先,这意味着您可以使用独立于任何url查询参数的方法。同样,一个方法应该做一件事。向其中添加查询参数的检索和验证只会使事情变得混乱。这有很多奇特的术语,但请记住,方法的名称应该反映它的功能,并且它只应该做一件明确定义的事情。另一种思考方式是:如果你不能给一个方法一个简短而清晰的名称,它确切地描述了它的功能,那么你很可能是做错了。你要么在一个方法中做了太多的事情,要么更糟糕的是,你不知道它里面发生了什么。谢谢你,但是我无法在
$statement->bind_param
中找到第八个参数。你能详细说明一下吗?$statement->bind_param('ssssss i',$mission,$date,$from,$to,$payment,$comment,$id);1='ssssss I'2=$mission 3=$date 4=$from 5=$to 6=$payment 7=$comment 8=$id我建议您打印要调试的SQL语句请在bind_paramAh之后打印SQL语句,谢谢!这里第一个参数(
ssss I
)的目的是绑定其他变量并定义ID。还是我错了?删除此参数会导致以下错误:
警告:mysqli_stmt::bind_param():类型定义字符串中的元素数与绑定变量数不匹配
。我该如何打印报表<代码>echo$语句?对不起,我现在了解“SSS i”。请打印SQL语句以进行调试
 public function getMissionsId()
 {
     $arr = array();
     $mission_id = isset($_GET['id']) ?  $_GET['id'] : '';
     $statement = $this->conn->prepare("SELECT id, username, date, mission, transpFrom, transpTo, payment, comment, created_at from missions where id = $mission_id");
     //echo $this->conn->error;
     $statement->bind_result($id, $username, $date, $mission, $from, $to, $payment, $comment, $created_at);
     $statement->execute();
     while ($statement->fetch()) {
       $arr[] = [ "id" => $id, "username" => $username, "date" => $date, "mission" => $mission, "transpFrom" => $from, "transpTo" => $to, "payment" => $payment,
       "comment" => $comment, "created_at" => $created_at];
     }
     $statement->close();

     return $arr;
 }
<?php
require_once("db.php");

 $id = intval($_POST['id']);
 $mission = strip_tags($_POST['mission']);
 $rawdate = htmlentities($_POST['date']);
 $date = date('Y-m-d', strtotime($rawdate));
 $from = strip_tags($_POST['from']);
 $to = strip_tags($_POST['to']);
 $payment = strip_tags($_POST['payment']);
 $comment = strip_tags($_POST['comment']);

 $conn->updateMission($id, $mission, $date, $from, $to, $payment, $comment);
?>

<div style='width: 50em'>
<div class='masterHeading'>Oppdraget er oppdatert</div>
  <br><br>
  <div class='descrText'>Oppdraget ble vellykket oppdatert.</div>
<?php btnCancel(); ?>
</div>
 public function updateMission($id, $mission, $date, $from, $to, $payment, $comment)
 {
     $statement = $this->conn->prepare("UPDATE missions SET mission = ?,date = ?,transpFrom = ?,transpTo = ?,payment = ?,comment = ? WHERE id = ?");
     echo $this->conn->error;
     $statement->bind_param('ssssssi', $mission, $date, $from, $to, $payment, $comment, $id);
     $statement->execute();
     $statement->close();

 }