【问题标题】:How to properly use msqli bind_param?如何正确使用 msqli bind_param?
【发布时间】:2020-09-02 05:47:15
【问题描述】:

我在向表中插入数据时遇到问题。这是代码,非常简单。然而,它总是以“无法将任务插入任务表”而告终。我做错了什么? ... // 添加任务 if (isset($_POST['addtask']) && isset($_POST['tasks']) && $_POST['tasks'] == 1) {

    //Check for empty fields
    if (!empty('task_name') && $_POST['assigned'] != 0 && $_POST['task_type'] != 0) {
      // Set vars
      $entityid = $_POST['entityid'];
      $task_name = $_POST['task_name'];
      $task_status = $_POST['task_status'];
      $assigned = $_POST['assigned'];
      $createdby = $_POST['createdby'];
      $tasktype  = $_POST['task_type'];
      $create_date = $_POST['create_date'];
      $due_date = $_POST['due_date'];
      $reminder_date = $_POST['reminder_date'];
      $task_note = $_POST['task_note'];

      // Create date and timestamp
      $ctime = mktime(date("H"), date("i"), date("s"));
      $cdate = date("H:i:s", $ctime);
      // Reformat dates with time
      $create_date = $create_date." ".$cdate;
      $due_date = $due_date." ".$cdate;
      $reminder_date = $reminder_date." ".$cdate;

      //DB call
      include_once("../inc/db_conn.php");

      // db insert for tasks
      $sqlinst = "INSERT INTO tasks(`entityid`,`task_name`,`task_status`,`assigned`,`createdby`,`task_type`,`create_date`,`due_ate`,`reminder_date`,`task_note`)
                  VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
      if ($stmt = mysqli_prepare($conn, $sqlinst)) {
        //Bind vars to prepend stmt as params
        mysqli_stmt_bind_param($stmt, "isiiiissss", $entityid, $task_name, $task_status, $assigned, $createdby, $tasktype, $create_date, $due_date, $reminder_date, $task_note);
        mysqli_stmt_execute($stmt);

        // Send success msg
        header("Location: ../add_task.php?succ=1");
      } else {
        echo "Could not insert task into tasks table";
        die();
      }
  }

} else {
  header("Location: ../index.php");
  exit();
}

...

这是 var_dump($_POST) 的输出 array(12) { ["tasks"]=> string(1) "1" ["entityid"]=> string(1) "0" ["task_name"]=> string(9) "测试任务" [" task_status"]=> string(1) "2" ["assigned"]=> string(1) "4" ["createdby"]=> string(1) "1" ["task_type"]=> string(1 ) "4" ["create_date"]=> string(10) "2020-08-31" ["due_date"]=> string(10) "2020-09-03" ["reminder_date"]=> string(10 ) "2020-09-02" ["task_note"]=> string(9) "Test Test" ["addtask"]=> string(0) "" }

2020-08-31 01:58:49

2020-09-03 01:58:49

2020-09-02 01:58:49

【问题讨论】:

  • 代码在哪里?
  • 哦,对不起,我以为我把它贴在那里了,
  • 现在好像显示了代码。
  • 确保你配置了 mysqli to throw exceptions 这样你就可以看到它失败的原因。如果您收到“无法插入任务...”,那么您的绑定参数代码甚至不会被执行。准备失败。
  • 哦,哇,我不知道,让我调查一下。

标签: php mysql


【解决方案1】:

好的,看来代码在插入部分中是正确的,当它应该是due_date时,有一个type-o“due_ate”。我能够看到错误的方法是在 mysql 语句之前添加这个 mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); 然后我添加 mysqli_report(MYSQLI_REPORT_OFF); 和结尾的脚本。欲了解更多信息,请参阅mysqli error reporting

【讨论】:

    猜你喜欢
    • 2012-09-25
    • 2013-09-10
    • 2014-07-14
    • 2013-03-24
    • 2015-08-23
    • 2013-07-30
    • 2018-08-27
    • 1970-01-01
    • 2016-06-17
    相关资源
    最近更新 更多