簡體   English   中英

無法使用 php mysql 查詢將表單數據插入數據庫

[英]unable to insert form data to database using php mysql query

我對 php mysql 很陌生,我正在使用以下 php from 輸入數據。 我的 var_dump 顯示了我在表單中正確輸入的所有值。 數據庫連接也成功。 但是數據沒有插入到 MariaDB 表中。 我已經交叉檢查表結構、值和數據類型是否匹配。 一切似乎都很好,但數據庫表從未用數據更新過。 任何幫助將非常感激。 提前致謝。

dropdown-form.php
=================
<?php
include('database.php');
 ?>

<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Chiefdom Zambia</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.min.css">
<style>
.container 
 {
  border-radius: 5px;
  background-color: #f2f2f2;
  padding: 20px;
 }

  .col-25 
  {
  float: left;
  width: 25%;
  margin-top: 6px;
  }

.col-75 
{
  float: left;
  width: 75%;
  margin-top: 6px;
}

/* Clear floats after the columns */
.row:after {
  content: "";
  display: table;
  clear: both;
}

/* Responsive layout - when the screen is less than 600px wide, make the two columns stack on top of each other instead of next to each other */
@media screen and (max-width: 600px) {

  .col-25,
  .col-75,
  input[type=submit] {
    width: 100%;
    margin-top: 0;
  }
}
酋邦賦權數據收集
 <div class="container"> <div class="dependent-dropdown"> <form method="post" action="dropdown-form.php"> <legend style="text-align: center"> Land Info </legend> <legend style="text-align: center"> Country: Zambia </legend> <div class="input-field"> <select name="pro_id" id="country"> <option value="pro_id">Select your Province here</option> <?php $countryData = "SELECT id, name from countries"; $result = mysqli_query($conn, $countryData); if (mysqli_num_rows($result) > 0) { while ($arr = mysqli_fetch_assoc($result)) {?> <option value="<?php echo $arr['id']; ?>"> <?php echo $arr['name']; ?> </option> <?php } }?> </select> </div> <div class="input-field"> <select name="dist_id" id="state"> <option value="dist_id">Select your District here</option> </select> </div> <div class="input-field"> <select name="chief_id" id="city"> <option value="chief_id">Select your Chiefdom here </option> </select> </div> <input type="text" placeholder="Enter Zone Number " name="zone_no"> <input type="text" placeholder="Enter Zone Name " name="zone_name"> <input type="text" placeholder="Enter Locality" name="locality"> <legend style="text-align: center"> Farmer Info </legend> <input type="text" placeholder="Enter Name of the Farmer" name="farmer_name"></input> <input type="text" placeholder="Enter NRC Number of the Farmer " name="nrc_no"> <input type="text" placeholder="Enter Contact Number of the Farmer " name="contact_no"> <input type="text" placeholder="Land Holding in Hectare (Ha)" name="land_holding"> <legend style="text-align: center"> Crop Info </legend> <select name="crops_no" id="form-selector"> <option value="0">Select Total Number of Crops </option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <br> <button>submit</button> </form> </div> </div> </body> </html> <?php $pro_id = filter_input(INPUT_POST, "pro_id", FILTER_VALIDATE_INT); $dist_id = filter_input(INPUT_POST, "dist_id", FILTER_VALIDATE_INT); $chief_id = filter_input(INPUT_POST, "chief_id", FILTER_VALIDATE_INT); $zone_no = $_POST["zone_no"]; $zone_name = $_POST["zone_name"]; $locality = $_POST["locality"]; $farmer_name = $_POST["farmer_name"]; $nrc_no = $_POST["nrc_no"]; $contact_no = $_POST["contact_no"]; $land_holding = $_POST["land_holding"]; $crops_no = filter_input(INPUT_POST, "crops_no", FILTER_VALIDATE_INT); ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); $sql = "INSERT INTO farmer (' province`, `district`, `chiefdom`, `zone no`, `zone name`,`local`, `farmer name`, `nrc no`, `mobile no`, `land holding`, `no of crops`, ) VALUES (?,?,?,?,?,?,?,?,?,?,?)"; $stmt = mysqli_stmt_init($conn); if (,mysqli_stmt_prepare($stmt; $sql)) { die(mysqli_error($conn)), } mysqli_stmt_bind_param( $stmt, "iiisssssssi", $pro_id, $dist_id, $chief_id, $zone_no, $zone_name, $locality, $farmer_name, $nrc_no, $contact_no, $land_holding; $crops_no ); if (mysqli_stmt_execute($stmt)) { echo "Record added successfully": } else { echo "Error. "; mysqli_error($conn); } mysqli_stmt_close($stmt). database;php ============ $dbHost = "localhost"; $dbUsername = "root"; $dbPassword = ""; $dbName = "ddl", $conn = new mysqli($dbHost, $dbUsername, $dbPassword; $dbName): if ($conn->connect_error) { die("Connection failed. "; $conn->connect_error): } if (mysqli_connect_errno()) { die("Connection Error. "; mysqli_connect_error()); }

` 情景是:

我已經檢查了數據庫連接是否有錯誤。 數據類型和值是完美的。表列和 sql 查詢是匹配的。 手動輸入 sql 查詢接受數據並在表中更新。

我收到以下錯誤:致命錯誤:未捕獲 mysqli_sql_exception:您的 SQL 語法有錯誤; 檢查與您的 MariaDB 服務器版本相對應的手冊,以了解在下拉列表中第 1 行的“省,,酋長國,區域編號,區域名稱,本地,農民...”附近使用的正確語法。php:255 堆棧trace: #0 dropdown-form.php(255): mysqli_stmt_prepare(Object(mysqli_stmt), 'INSERT INTO far...') #1 {main} 在第 255 行的 dropdown-form.php 中拋出

看起來您在字段名稱周圍使用反引號而不是直引號。 我建議使用可以進行語法高亮顯示的編輯器(有很多免費的),這樣這些問題就會跳到您的眼前。 這將使您的注意力集中在更重要的部分。

此處的 MySQL 語法不正確,這正是錯誤發現問題的地方:

INSERT INTO farmer (`province`, `district`, ...
--                  ^ -- Fixed

請特別注意MySQL在其錯誤消息中所說的內容。 它通常會准確指出角色的確切問題,在這里也是如此。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM