2016-12-02 1 views
2

오류를 찾으려고 시도했지만 찾을 수 없습니다. 제출을 시도 할 때 "오류 연결"이라고 표시됩니다. 비록 업로드하고 싶은 이미지가 내 컴퓨터의 지정된 폴더에 잘 업로드되었지만 phpmyadmin의 데이터가 mysql 데이터베이스에 삽입되지는 않습니다.내 PHP 폼이 MySQL 데이터베이스에 데이터를 삽입하지 못함

이 코드에서 오류를 발견하게 도와주세요. 고맙습니다! 내가 문제를 찾은 것 같아 :

이 내 코드

<?php 

      include("includes/db.php"); 

     ?> 

      <html> 
       <head> 
        <title>Inserting Books</title> 

       <script src="//cdn.tinymce.com/4/tinymce.min.js"></script> 
       <script>tinymce.init({ selector:'textarea' });</script>  


       </head> 

      <body bgcolor="skyblue"> 
       <form action="insert_book.php" method="post" enctype="multipart/form-data"> 

        <table align="center" width="700" border="2" bgcolor="orange"> 

         <tr align="center"> 
          <td colspan="7"><h2>Insert New Post Here</h2></td> 
         </tr> 

         <tr> 
          <td align="right"><b>Book Title:</b></td> 
          <td><input type="text" name="book_title" size="60" required/></td> 
         </tr> 




         <tr> 
          <td align="right"><b>Book Subject:</b></td> 
          <td> 
          <select name="book_subject" required> 
           <option>Select a subject</option> 
          <?php  
       $get_subjects="select * from subjects"; 

       $run_subjects=mysqli_query($con,$get_subjects); 

       while($row_subjects=mysqli_fetch_array($run_subjects)){ 

       $subjects_id=$row_subjects['subjects_id']; 
       $subjects_title=$row_subjects['subjects_title']; 

       echo "<option value='$subjects_id'>$subjects_title</option>"; 
       } 
           ?>  
          </select> 
          </td> 
         </tr> 


         <tr> 
          <td align="right"><b>Book Course Type:</b></td> 
          <td> 
          <select name="book_course_type" required> 
           <option>Select a course type</option> 
          <?php  
       $get_book_course_type="select * from course_type"; 

       $run_book_course_type=mysqli_query($con,$get_book_course_type); 

       while($row_course_type=mysqli_fetch_array($run_book_course_type)){ 

       $course_type_id=$row_course_type['course_type_id']; 
       $course_type_title=$row_course_type['course_type_title']; 

       echo "<option value='$course_type_id'>$course_type_title</option>"; 
       } 
           ?>  
          </select> 
          </td> 
         </tr> 



         <tr> 
          <td align="right"><b>Book Author:</b></td> 
          <td><input type="text" name="book_author" required/></td> 
         </tr> 




         <tr> 
          <td align="right"><b>Book Image:</b></td> 
          <td><input type="file" name="book_image" required/></td> 
         </tr> 


         <tr> 
          <td align="right"><b>Book Price:</b></td> 
          <td><input type="text" name="book_price" required/></td> 
         </tr> 

         <tr> 
          <td align="right"><b>Book Description:</b></td> 
          <td><textarea name="book_desc" cols="20" rows="10"></textarea></td> 
         </tr> 

         <tr> 
          <td align="right"><b>Book keywords:</b></td> 
          <td><input type="text" name="book_keywords" required/></td> 
         </tr> 






         <tr align="center"> 
          <td colspan="7"><input type="submit" name="insert_post" value="Insert Book Now"/></td> 
         </tr> 


        </table> 


       </form> 

      </body> 
      </html> 

     <?php 

      if(isset($_POST['insert_post'])){ 

       //getting the text data from the fields 
       $book_title=$_POST['book_title']; 
       $book_subject=$_POST['book_subject']; 
       $book_course_type=$_POST['book_course_type']; 
       $book_author=$_POST['book_author']; 
       $book_price=$_POST['book_price']; 
       $book_desc=$_POST['book_desc']; 
       $book_keywords=$_POST['book_keywords']; 

       //getting the image from the field 
       $book_image= $_FILES['book_image']['name']; 
       $book_image_tmp= $_FILES['book_image']['tmp_name']; 

       move_uploaded_file($book_image_tmp,"book_images/$book_image"); 

       $insert_book = "insert into books(books_course_type,books_subject,books_title,books_price,books_desc,books_author,books_image,books_keywords) values('$book_course_type','$book_subject','$book_title','$book_price','$book_desc','$book_author','$book_image','$book_keywords')"; 

       $insert_pro= mysqli_query($con,$insert_book) 
        or die ('Error connecting'); 

       if($insert_pro){ 

       echo "<script>alert('Book Has Been Inserted!')</script>"; 
       echo "<script>window.open('insert_book.php','_self')</script>"; 
       } 

      } 
     ?> 

EDIT 내 db.php를

<?php 

$con= mysqli_connect("localhost","root","","bookmarket"); 

?> 

입니다. 데이터베이스에 쿼리를 입력하면 오류 1062가 발생했습니다 : 'PRIMARY'키에 중복 항목 '0'이 있습니다. 그래서 다른 입력을 추가 할 때마다 books_id (테이블 "책"의 기본 키) 값은 항상 0이며 증가하지 않습니다. 어떻게 해결할 수 있습니까?

+1

쿼리를 에코하여 데이터베이스에서 직접 확인하십시오. 어떤 문법 에러가 있다면, – Deep

+0

쿼리에 데이터베이스 이름을 사용하는 것을 쉽게 볼 수 있습니다. – selvan

+0

** 경고 ** : mysqli를 사용할 때 [매개 변수화 된 쿼리] (http://php.net/manual/)를 사용해야합니다. en/mysqli.quickstart.prepared-statements.php)와 ['bind_param'] (http://php.net/manual/en/mysqli-stmt.bind-param.php)을 사용하여 쿼리에 사용자 데이터를 추가하십시오. ** 심각한 [SQL injection bug] (http://bobby-tables.com/)를 만들었 기 때문에 문자열 보간이나 연결을 사용하여 **이를 수행하지 마십시오. **'$ _POST' 또는'$ _GET' 데이터를 쿼리에 직접 입력하지 마십시오. 실수로 누군가를 악용하려고 시도하면 매우 위험 할 수 있습니다. – tadman

답변

1

위의 코드에서 양식 작업은 insert_book.php로 리디렉션되므로 해당 페이지 (insert_book.php)에 mysql 연결이 있는지 확인하는 것이 좋습니다. 희망이 당신의 접속 설정을 확인

+0

그 방법을 알려주시겠습니까? 고맙습니다! – Kayzerrex

+0

db.php를 insert_book.php에 포함 시켰습니까? –

+0

db.php를 제공 할 수 있습니까? –

1

시도 도움이 될 것입니다 것은/db.php를 파일을 포함하거나 위의 코드 제거에서 .. 해당 파일 여부에서 사용할 수있는 날씨 연결을 확인

+0

그 방법을 말해 줄 수 있습니까? 난 아직도 새로운이 – Kayzerrex

+0

@ Kayzerrex 당신이 db.php 파일에 작성한 내용을 말해 줄 수 있습니까? "오류 연결"이라면 단순히 mysql 연결이 제대로 수행되지 않았 음을 의미합니다. –

+0

위의 db.php 코드를 추가했습니다. – Kayzerrex

1

을 insert_book.php 할 양식을 리디렉션 폼 액션은 insert_book.php로 리다이렉트되기 때문에 그렇지 않으면 PHP 코드는 insert_book.php에 넣어집니다.

0

편집 : 문제가 있다고 생각합니다. 데이터베이스에 쿼리를 입력하면 오류 1062가 발생했습니다 : 'PRIMARY'키의 중복 항목 '0'. 그래서 다른 입력을 추가 할 때마다 books_id (기본 키 테이블 "books")의 값은 항상 0이며 증가하지 않습니다. 이 을 어떻게 해결합니까? 기본 키

추가 자동 증가는

ALTER TABLE books MODIFY books_id INTEGER NOT NULL AUTO_INCREMENT; 
0

EDIT처럼

뭔가를 books_id : 나는이 문제를 발견 한 것 같아요. 데이터베이스에 쿼리를 입력하면 오류 1062가 발생했습니다 : 'PRIMARY'키에 중복 항목 '0'이 있습니다. 그래서 다른 입력을 추가 할 때마다 books_id (테이블 "책"의 기본 키) 값은 항상 0이며 증가하지 않습니다. 어떻게 해결할 수 있습니까?

테이블 ID (데이터 유형)가 auto_increment로 설정되어 있는지 확인하십시오.

관련 문제