0

I write my code but I still have this error (Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens in database). I have table users which have username and user_id. And I have table country which has country_id as primary key(Varchar) and has country_name, the table education has user_id as foreign key and also country_id as foreign key.

<?php
    include_once "connection.php";
    /** @var PDO $conn */
    
    
    if(isset($_REQUEST['btn_register'])) {
    
        $user_id = $_REQUEST['user_id'];
        $edname = $_REQUEST['edname'];
        $street = $_REQUEST['street_address'];
        $postcode = $_REQUEST['postal_address'];
        $city = $_REQUEST['city'];
        $pofiletext = $_REQUEST['profiletext'];
        $positionn = $_REQUEST['position_com'];
        $video = $_REQUEST['video'];
        $logo = $_REQUEST['logo'];
        $contactperson = $_REQUEST['contactpersoon'];
        $emailcon = $_REQUEST['email_contactpersoon'];
        $website = $_REQUEST['website'];
    
        $country="SELECT country_id FROM country WHERE country_id= 'AD'";
        try {
            $select_stmt = $conn->prepare("INSERT INTO education (user_id ,edname, street_address, postal_address, city, country_id , profiletext ,position_com, video, logo,contactpersoon, email_contactpersoon , website )
     VALUES (':user_id',':edname',':street_address', ':postal_address',':city',':countryid', ':about',':position_com', ':video', ':logo', ':contactperson',':email_contactpersoon', ':website')");
    
    
    
            $select_stmt->bindParam(':user_id', $user_id);
            $select_stmt->bindParam(':edname', $_POST['edname']);
            $select_stmt->bindParam(':street_address', $_POST['street_address']);
            $select_stmt->bindParam(':postal_address', $_POST['postal_address']);
            $select_stmt->bindParam(' :city', $_POST['city']);
            $select_stmt->bindParam(':country_id',$country );
            $select_stmt->bindParam(':profiletext', $_POST['profiletext']);
            $select_stmt->bindParam(':position_com', $_POST['position_com']);
            $select_stmt->bindParam(':video', $_POST['video']);
            $select_stmt->bindParam(':logo', $_POST['logo']);
            $select_stmt->bindParam(':contactpersoon', $_POST['contactpersoon']);
            $select_stmt->bindParam(':email_contactpersoon', $_POST['email_contactpersoon']);
            $select_stmt->bindParam(':website', $_POST['website']);
            $select_stmt->execute();
            $resiterMsg = "Register successfully";
    
            header("location: index.php");
    
    
        } catch (PDOExeption $e) {
            echo $e->getMessage();
    
        }
    }
        ?>

And my html code:

<?php
include_once "html.html";
include  "connection.php";
/** @var PDO $conn */
$sql = $conn->prepare('SELECT * From intern where user_id = :user_id');
$sql->bindParam(":user_id", $_GET['user_id']);
$sql->execute();
$row = $sql->fetch();
?>
<!DOCTYPE html>
<link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
<script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<!------ Include the above in your HEAD tag ---------->


<html>
<head>

    <link href="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
    <script src="//maxcdn.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
    <link href="educationRegister.php">
    <!------ Include the above in your HEAD tag ---------->
</head>

<body id="educationForm">
<div class="container">

    <div class="login-form">
        <div class="main-div">
            <div class="panel">
                <h2>Register</h2>


            </div>
            <form  method="post" class="cd-form floating-labels" action="educationRegister.php">


                <div class="form-group">

                    <input type="hidden" name="type" value="education">
                    <input type="hidden" name="user_id" value="<?php echo $_GET['user_id'] ?>" >
                    <input type="text" name="edname" class="form-control"  placeholder="Name">

                </div>


                <div class="form-group">
                    <input type="text" name="street_address" class="form-control" placeholder="Street">
                </div>

                <div class="form-group">
                    <input type="text" name="postal_address" class="form-control"  placeholder="Postal Code">
                </div>

                <div class="form-group">
                    <select name="city">
                        <option>--Select city--</option>
                        <?php

                        $country_stmt=$conn->prepare('SELECT * FROM country');
                        $country_stmt->execute();

                        while ($row = $country_stmt->fetch(PDO::FETCH_ASSOC)) { ?>
                            <option value="<?php echo $row['country_id']; ?>"><?php echo $row['countryname']; ?></option>
                        <?php } ?>
                    </select>
                </div>


                <div class="form-group">
                    <input type="text" name="profiletext" class="form-control"  placeholder="About you">
                </div>

        <div class="form-group">
            <input type="text" name="position_com" class="form-control"  placeholder="position">
        </div>

        <div class="form-group">
            <input type="text" name="video" class="form-control" placeholder="video">
        </div>
                <div class="form-group">
                    <input type="text" name="logo" class="form-control" placeholder="logo">
                </div>

                <div class="form-group">
                    <input type="text" name="contactpersoon" class="form-control"  placeholder="contactperson">
                </div>

                <div class="form-group">
                    <input type="email" name="email_contactpersoon" class="form-control"  placeholder="emailContactperson">
                </div>

                <div class="form-group">
                    <input type="text" name="website" class="form-control"  placeholder="website">
                </div>







                <div class="form-group">
                    <div class="col-sm-offset-3 col-sm-9 m-t-15">
                        <button type="submit" name="btn_register" class="btn btn-primary" value="Regsiter" >
                        <button type="button" class="btn btn-primary"> <a href="index.php">Cancel</a> </button>
                    </div>
                </div>





            </form>
        </div>


</div>
</div>




</body>
</html>
Nigel Ren
  • 56,122
  • 11
  • 43
  • 55
Nemo
  • 1

1 Answers1

0
$select_stmt->bindParam(' :city', $_POST['city']);

You have an empty space between ' and :. Try with it like this:

$select_stmt->bindParam(':city', $_POST['city']);
Răzvan T.
  • 360
  • 4
  • 18