2017-09-25 1 views
3

관련 게시물을 확인하려고했지만 이미 내 문제를 해결하는 데 도움이되지 않습니다. 데이터가 데이터베이스에 저장되는 약속을위한 페이지를 만들려고합니다. 여기오류 : SQLSTATE [23000] : 무결성 제약 조건 위반 : 1048 'comments'열이 null이 될 수 없음

<form name="appointments" action="" method="POST"> 
<label>Name (First/Last)</label> <br> 
<input type="text" name="name" id="name" required="required" placeholder="Please Enter Name"> <br> 
<label>Email Address</label> <br> 
<input type="email" name="email" id="email" required="required" placeholder="[email protected]"> <br> 
<label>Phone Number</label> <br> 
<input type="text" name="contactno" id="contactno" required="required" placeholder="9221234567"> <br> 
<label>Nature of Appointment</label> <br> 
<select name="service" id="service"> 
<option value="other">Other</option> 
<option value="consultation">Consultation</option> 
<option value="Surgery">Surgery</option> 
</select> <br> 
</div> 
<label>Preferred Appointment Date</label> <br> 
<input type="date" name="prefDate" id="prefDate"> <br> 
<label>Comments</label> <br> 
<textarea rows="12" cols="40" name="comments" form="usrform" placeholder="Your comments here..."></textarea> <br> 
</div> 
<input type="submit" class="btnRegister" name = "schedule" value="Send Your Request"> 
</form> 

connect2.php

<?php 
    //Local Server Information 
    $server = "127.0.0.1"; 
    $username = "root"; 
    $password = ""; 
    $db = "myDB"; 

    $name = ""; 
    $email = ""; 
    $contactno = ""; 
    $service = ""; 
    $prefDate = ""; 
    if (isset($_POST['comments']) && !empty($_POST['comments'])) { 
     $comments = $_POST['comments']; 
    } else { 
     $comments = ""; 
    } 
    //Check if connection was successful 
    try { 
     $con = new PDO("mysql:host=$server;dbname=$db","$username","$password"); 
     $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     if(isset($_POST['schedule'])) 
     { 
      $name = $_POST['name']; 
      $email = $_POST['email']; 
      $contactno = $_POST['contactno']; 
      $service = $_POST['service']; 
      $prefDate = $_POST['prefDate']; 
      $comments = $_POST['comments']; 


      $insert = $con->prepare("INSERT INTO appointments(name, email,contactno, service, prefDate, comments) values(:name, :email, :contactno, :service, :prefDate, :comments)"); 

      $insert->bindParam(':name', $name); 
      $insert->bindParam(':email', $email); 
      $insert->bindParam(':contactno', $contactno); 
      $insert->bindParam(':service', $service); 
      $insert->bindParam(':prefDate', $prefDate); 
      $insert->bindParam(':comments', $comments); 

      $insert->execute(); 
     } 
    } catch(PDOException $e) { 
     //die("Oops! Something went wrong with your database."); 
     echo "Error: ". $e->getMessage(); 
    } 
?> 

이것은 코드를 여기

Notice: Undefined index: comments in C:\xampp\htdocs\db\connect2.php on line 29 Error: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'comments' cannot be null

PHP는되어 있지만,이 두 가지 오류 메시지가 내 창에 나타나는 유지 오류가 발생한 행을 나타냅니다.

$comments = $_POST['comments'];

나는 이미 $ comments = "you comment"처럼 하드 코딩을 시도했다. 오류없이 완료되었으며 데이터가 데이터베이스에 나타납니다. 그러나 위의 코드를 사용하면 오류가 나타납니다. 누구든지 제발 도와주세요. 내가 뭐 놓친 거 없니? 다른 선이 어째서 잘못되었는지 확실히 알 수는 없습니다.

감사

답변

0

같은 mysql 쿼리 (또는 당신이 사용하는 다른 데이터베이스), 뭔가를 실행할 수 있습니다 경우에 따라서 귀하의 제안을 적용 그것을 해결하기 위해 노력했다. 그리고 그것은 내가 PHP에서 입력 한 코드의이 부분에서 오류를 일으킨 것으로 보인다.

<textarea rows="12" cols="40" name="comments" form="usrform" placeholder="Your comments here..."></textarea> 

은 단순히 작동하는 코드를 만들어 제거

form="usrform"

입니다. textarea 태그에서 다른 양식 이름을 실수로 할당했기 때문에 양식이 prefDate에서 중지 된 것처럼 보입니다.

이 덕분에 제가이 일을 시도 잘못된

1

당신이 시도 할 수 있습니다 :

$comments = !empty($_POST['comments']) ? $_POST['comments'] : 'Default Comment'; 
+0

안녕하세요 무슨 일이 있었는지보고했다 조언을 준이, 오류 : SQLSTATE [23000]가 : 무결성 제약 조건 위반 : 1,048 열 '코멘트'null 일 수 없습니다 오류가 사라졌다 전혀 오류가 없었습니다. 그러나 덧글은 'default comment'만 삽입하고 내가 입력 한 내용이 아닙니다. – UmaruHime

1

오류 메시지가 자체 알 - 당신은 비워 둘 수 없습니다 열의 값을 할당하지 위해 노력하고 있습니다. 해결책은 - 데이터베이스 테이블에서 comments 필드에 기본값을 null로 설정하십시오. 당신은 phpMyAdmin을에게 printscreen

을 사용하거나이

ALTER TABLE <table name> MODIFY COLUMN comments <column type> DEFAULT NULL; 
+0

이 작업을 시도했지만 오류가 사라졌습니다. 그러나 데이터는 이제 null로 나타나는 주석을 제외하고 데이터베이스에 나타납니다. T^T – UmaruHime

+0

그것이 어떻게 작동해야하는지. 만약 당신이 디폴트 값을 가지고 있지 않다면 (당신의 경우 null) 당신은 아무 것도 지정하지 않습니다 - filed는 null 값을 가질 것입니다. 빈 문자열'' ''을 원하면'ALTER TABLE을 실행할 수있다. MODIFY COLUMN 코멘트 NOT NULL DEFAULT' '; –

관련 문제