>

상태 표

main.php 파일의 드롭 다운에서 PHP 파일을 사용하여 MySQL 서버로 값을 가져오고 싶습니다.

조건

사용자가 선택 항목을 선택하지 않았거나 기본 선택 항목을 선택하지 않은 경우  여기서 옵션 값은 0입니다.

옵션 값이 0이면 드롭 다운 값을 MySQL 서버에 삽입해서는 안됩니다.

add.php에 무엇을 추가해야합니까?

main.php

<option value="0">(Select Animal)</option>

다른 PHP 파일 (add.php)

<html>
<?php
include 'connection.php';
require_once 'add.php';
?>
<body>
<form method="post" action="add.php">
     <select id="animal" name="animal">                      
            <option value="0">(Select Animal)</option> <!--Non select option-->
            <option value="Cat">Cat</option>
            <option value="Dog">Dog</option>
            <option value="Cow">Cow</option>
     </select>
     <button type="submit" name="Save">Save</button > <!--Send the selected value to add.php-->
</form>
</body>
</html>

<?php include 'connection.php'; if(isset($_POST['Save'])) { $animal = mysqli_real_escape_string($conn,$_POST['animal']; ); $conn->query("INSERT INTO animal (name) VALUES(?)"); header("location: main.php"); } ?>

  • 답변 # 1

    아래와 같이 드롭 다운에 Javascript 유효성 검사를 사용하거나 동물의 $_POST 조건을 유지할 수 있습니다 :

    <?php
    include 'connection.php';
    if(isset($_POST['Save']))
          {
     if($_POST['animal']!=0){
                  $animal = mysqli_real_escape_string($conn,$_POST['animal']);            
                  $sql="INSERT INTO animal (name) VALUES(?) ";              
                  header("location: main.php");
        }else{ 
          header("location: main.php");
        }
          }
    ?>
    
    

  • 답변 # 2

    어레이 키가 설정되어 있는지 확인하기 전에 배열 키가 있는지 확인하십시오. 그렇지 않으면 오류/경고가 발생할 수 있습니다.

    동물 값이 0보다 큰지 확인하고 검색어에 포함 시키십시오.

    <?php
        include 'connection.php';
        if(array_key_exists('Save', $_POST)) {
          if(array_key_exists('animal', $_POST) && $_POST['animal'] > 0) {
            $animal = mysqli_real_escape_string($conn, $_POST['animal']);
            //Prepare statement
            $conn->prepare("INSERT INTO animal (name) VALUES (?)");
            //Include animal value in string query
            $conn->bind_param("s", $animal);
            //Run query
            $conn->query($sql);    
            header("location: main.php");
          } else {
            //Fail gracefully
            header("location: error.php"); //Or whereever you want to redirect to.
          }  
        }
        ?>
    
    

    여기서 실제로 쿼리를 실행하고 있지는 않습니다.

    그냥 문자열로 만들거나 동물의 가치를 더하지도 않습니다

    또한 $_POST['animal'] 후에 세미콜론을 제거하십시오   mysqli_real_escape_string() 를 할 때 .

    수정 : 업데이트 한 내용으로 업데이트했습니다.

    편집 2 : 문장을 올바르게 준비하는 데 필요한 것을 추가했습니다.

  • 답변 # 3

    @sony의 답변에서 if($_POST['animal']!= 0) 를 변경했습니다.   if($_POST['animal']!= '0') 로  작동 시키십시오.

    변경

    2 개의 작은 따옴표가 추가되었습니다.

    <?php
    include 'connection.php';
    if(isset($_POST['Save']))
    {
     if($_POST['animal']!= '0') //2 Single quotes are added.
    {
                  $animal = mysqli_real_escape_string($conn,$_POST['animal']);            
                  $sql="INSERT INTO animal (name) VALUES(?) ";              
                  header("location: main.php");
        }else{ 
          header("location: main.php");
        }
          }
    ?>
    
    

관련 자료

  • 이전 credit card - 엘라 본 수렴 지불 - ssl_test_mode는 무엇입니까?
  • 다음 mysql - 뷰를 만드는 방법?