programing

php mysql 쿼리를 사용하여 양식 데이터를 데이터베이스에 삽입할 수 없습니다.

padding 2023. 8. 11. 21:35
반응형

php mysql 쿼리를 사용하여 양식 데이터를 데이터베이스에 삽입할 수 없습니다.

나는 php mysql에 매우 처음이며, 나는 데이터를 입력하기 위해 다음의 php를 사용하고 있습니다. 나의 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;
  }
}
Chiefdom Empowerment Data Collection
  <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 서버 버전에 해당하는 설명서에서 "province" 근처에서 사용할 올바른 구문을 확인하십시오., 지역의, 우두머리의 세계, 구역 번호, 구역명,현지의, 드롭다운 형식.php:255의 라인 1에서 'farmer...' 스택 추적: #0 드롭다운 형식.php(255): mysqli_stmt_prepare(오브젝트(mysqli_stmt), 'INSERT INTER IN FAR...') #1 {main}이(가) 드롭다운 형식으로 255행에 느려졌습니다.php

필드 이름 주위에 따옴표를 사용하지 않고 뒤로 체크 표시를 하는 것 같습니다.저는 구문 강조(공짜가 많이 있음)를 수행하는 편집기를 사용하는 것이 좋습니다. 그러면 이러한 문제가 눈에 띄게 됩니다.이렇게 하면 더 중요한 부분에 초점을 맞출 수 있습니다.

여기서 MySQL 구문은 정확하게 오류가 문제를 발견한 곳이 아닙니다.

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

MySQL이 오류 메시지에서 말하는 내용에 매우 주의하십시오.그것은 보통 캐릭터에게 정확한 문제를 지적하는 것입니다. 그리고 여기서 그렇게 했습니다.

언급URL : https://stackoverflow.com/questions/75128088/unable-to-insert-form-data-to-database-using-php-mysql-query

반응형