오류를 찾으려고 시도했지만 찾을 수 없습니다. 제출을 시도 할 때 "오류 연결"이라고 표시됩니다. 비록 업로드하고 싶은 이미지가 내 컴퓨터의 지정된 폴더에 잘 업로드되었지만 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이며 증가하지 않습니다. 어떻게 해결할 수 있습니까?
쿼리를 에코하여 데이터베이스에서 직접 확인하십시오. 어떤 문법 에러가 있다면, – Deep
쿼리에 데이터베이스 이름을 사용하는 것을 쉽게 볼 수 있습니다. – selvan
** 경고 ** : 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