2

I tried to look for any error but I couldn't find it. When I tried to submit, it said that I have "Error Connection". Even though the image that I want to upload is uploaded just fine in the specified folder in my pc but no data are inserted into mysql database in phpmyadmin

Please help me spot the errors in this code. Thank you!

This is my db.php

<?php

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

?>

This is my code

<?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: I think I found the problem. When I entered the query in the database I got ERROR 1062: Duplicate entry '0' for key 'PRIMARY'. So every time I add another input, the value for books_id (primary key of table "books") is always zero, it doesnt increase. How do I solve this?

3
  • 1
    echo your query and try that direct in database first. If any syntax error is there then you can see that easily Commented Dec 2, 2016 at 5:58
  • use database name in the query Commented Dec 2, 2016 at 6:10
  • WARNING: When using mysqli you should be using parameterized queries and bind_param to add user data to your query. DO NOT use string interpolation or concatenation to accomplish this because you have created a severe SQL injection bug. NEVER put $_POST or $_GET data directly into a query, it can be very harmful if someone seeks to exploit your mistake. Commented Dec 2, 2016 at 6:32

5 Answers 5

1

In your above code, the form action is redirected to insert_book.php, it is better to check if there is mysql connection in that page( insert_book.php). Hope this will help you

Sign up to request clarification or add additional context in comments.

5 Comments

Can you tell me how to do that? Thank you!
have you included db.php in insert_book.php?
can you provide your db.php?
i added my db.php
@kayzerrex did you echo your query and try it in database?
1

Try to check connection setting in includes/db.php file or you are redirecting form to insert_book.php check weather connection available in that file or not..

2 Comments

Can you tell me how to do that? I'm still new at this
@Kayzerrex can you tell me what you have written in db.php file because you are getting "error connection" it simply means connection to mysql is not done properly
1

In above code remove the action from the form otherwise php code put in insert_book.php because form action redirect to the insert_book.php.

Comments

0

EDIT: I think I found the problem. When I entered the query in the database I got ERROR 1062: Duplicate entry '0' for key 'PRIMARY'. So every time I add another input, the value for books_id (primary key of table "books") is always zero, it doesnt increase. How do I solve this?

Add autoincrement for primary key books_id

Something like

ALTER TABLE books MODIFY books_id INTEGER NOT NULL AUTO_INCREMENT;

Comments

0

EDIT: I think I found the problem. When I entered the query in the database I got ERROR 1062: Duplicate entry '0' for key 'PRIMARY'. So every time I add another input, the value for books_id (primary key of table "books") is always zero, it doesnt increase. How do I solve this?

Check your table ID ( datatype ) if it is set to auto_increment.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.