SQLSTATE [HY093]: Invalid parameter number: number of bound variables does not match number of tokens

0

I have been working for a while with php and sql in Object oriented programming and I just started using sql tables in this I get this error:

  

SQLSTATE [HY093]: Invalid parameter number: number of bound variables does not match number of tokens

the code is this: Entity:

<?php
class Usuarios
{

//Tabla usuario

private $id_usuario;
private $tipo_usuario;
private $tipo_documento;
private $documento_usuario;
private $pnombre_usuario;
private $snombre_usuario;
private $papellido_usuario;
private $sapellido_usuario;
private $cel_usuario;
private $tel_usuario;
private $genero;
private $email_usuario;

//Tabla Genero

private $idgenero;
private $d_genero;

//Tabla tipo usuario

private $idtipo_usuario;
private $d_tipo_usuario;

//Tabla tipo documento

private $idtipo_documento;
private $d_tipo_documento;


public function __GET($k){ return $this->$k; }
public function __SET($k, $v){ return $this->$k = $v; }
}
?>

Model:

<?php

class UsuariosModel
{
private $pdo;

public function __CONSTRUCT()
{
    try
    {
        $this->pdo = new PDO('mysql:host=localhost;dbname=mamalas', 'root', '');
        $this->pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);                
    }
    catch(Exception $e)
    {
        die($e->getMessage());
    }
}

public function Listar()
{
    try
    {
        $result = array();

        $stm = $this->pdo->prepare("SELECT * FROM usuarios 
        /*INNER JOIN tipo_usuario ON usuarios.'tipo_usuario'= tipo_usuario.'id_usuario'*/
        INNER JOIN tipo_documento ON usuarios.'tipo_documento'=tipo_documento.'idtipo_documento' 
        INNER JOIN genero ON usuarios.'genero'=genero.'idgenero'");
        $stm->execute();

        foreach($stm->fetchAll(PDO::FETCH_OBJ) as $r)
        {
            $alm = new Usuarios();

            $alm->__SET('id_usuario', $r->id_usuario);
            $alm->__SET('tipo_usuario', $r->d_tipo_usuario);
            $alm->__SET('tipo_documento', $r->d_tipo_documento);
            $alm->__SET('documento_usuario', $r->documento_usuario);
            $alm->__SET('pnombre_usuario', $r->pnombre_usuario);
            $alm->__SET('snombre_usuario', $r->snombre_usuario);
            $alm->__SET('papellido_usuario', $r->papellido_usuario);
            $alm->__SET('sapellido_usuario', $r->sapellido_usuario);
            $alm->__SET('cel_usuario', $r->cel_usuario);
            $alm->__SET('tel_usuario', $r->tel_usuario);    
            $alm->__SET('genero', $r->d_genero);
            $alm->__SET('email_usuario', $r->email_usuario);


            $result[] = $alm;
        }

        return $result;
    }
    catch(Exception $e)
    {
        die($e->getMessage());
    }
}

public function Obtener($id_usuario)
{
    try 
    {
        $stm = $this->pdo
                  ->prepare("SELECT * FROM usuarios 
                  INNER JOIN tipo_usuario ON usuarios.'tipo_usuario'= tipo_usuario.'idtipo_usuario'
                  INNER JOIN tipo_documento ON usuarios.'tipo_documento'=tipo_documento.'idtipo_documento' 
                  INNER JOIN genero ON usuarios.'genero'=genero.'id_genero' WHERE id_usuario = ?");


        $stm->execute(array($id_usuario));
        $r = $stm->fetch(PDO::FETCH_OBJ);

        $alm = new Usuarios();

            $alm->__SET('id_usuario', $r->id_usuario);
            $alm->__SET('tipo_usuario', $r->idtipo_usuario);
            $alm->__SET('tipo_documento', $r->idtipo_documento);
            $alm->__SET('documento_usuario', $r->documento_usuario);
            $alm->__SET('pnombre_usuario', $r->pnombre_usuario);
            $alm->__SET('snombre_usuario', $r->snombre_usuario);
            $alm->__SET('papellido_usuario', $r->papellido_usuario);
            $alm->__SET('sapellido_usuario', $r->sapellido_usuario);
            $alm->__SET('cel_usuario', $r->cel_usuario);
            $alm->__SET('tel_usuario', $r->tel_usuario);    
            $alm->__SET('genero', $r->id_genero);
            $alm->__SET('email_usuario', $r->email_usuario);
        return $alm;
    } catch (Exception $e) 
    {
        die($e->getMessage());
    }
}

public function Eliminar($id_usuario)
{
    try 
    {
        $stm = $this->pdo
                  ->prepare("DELETE FROM usuarios WHERE id_usuario = ?");                     

        $stm->execute(array($id_usuario));
    } catch (Exception $e) 
    {
        die($e->getMessage());
    }
}

public function Actualizar(usuarios $data)
{
    try 
    {
        $sql = "UPDATE usuarios SET 
                    tipo_usuario           =    ?, 
                    tipo_documento         =    ?, 
                    documento_usuario        =  ?,
                    pnombre_usuario          =  ?,
                    snombre_usuario          =  ?, 
                    papellido_usuario        =  ?,
                    sapellido_usuario        =  ?,
                    cel_usuario              =  ?,
                    tel_usuario              =  ?,
                    genero                 =  ?;
                    email_usuario            =  ?,
                WHERE id_usuario = ?";

        $this->pdo->prepare($sql)
             ->execute(
            array(
                $data->__GET('tipo_usuario'), 
                $data->__GET('tipo_documento'), 
                $data->__GET('documento_usuario'),
                $data->__GET('pnombre_usuario'), 
                $data->__GET('snombre_usuario'), 
                $data->__GET('papellido_usuario'),
                $data->__GET('sapellido_usuario'),      
                $data->__GET('cel_usuario'),        
                $data->__GET('tel_usuario'),
                $data->__GET('genero'),
                $data->__GET('email_usuario'),          
                $data->__GET('id_usuario')
                )
            );
    } catch (Exception $e) 
    {
        die($e->getMessage());
    }
}

public function Registrar(Usuarios $data)
{
    try 
    {
    $sql = "INSERT INTO 'usuarios' ('id_usuario', 'tipo_usuario', 'tipo_documento', 'documento_usuario', 'pnombre_usuario', 'snombre_usuario', 'papellido_usuario', 'sapellido_usuario', 'cel_usuario', 'tel_usuario', 'genero', 'email_usuario') 
    VALUES (NULL, '?', '?, '?', '?', '?', '?', '?', '?', '?', '?')";

    $this->pdo->prepare($sql)
         ->execute(
        array(
            $data->__GET('tipo_usuario'), 
            $data->__GET('tipo_documento'), 
            $data->__GET('documento_usuario'),
            $data->__GET('pnombre_usuario'),
            $data->__GET('snombre_usuario'), 
            $data->__GET('papellido_usuario'),
            $data->__GET('sapellido_usuario'),
            $data->__GET('cel_usuario'),
            $data->__GET('tel_usuario'),
            $data->__GET('genero'),
            $data->__GET('email_usuario')
            )
        );
    } catch (Exception $e) 
    {
        die($e->getMessage());
    }
}
}
?>

View:

php
require_once 'usuarios.Entidad.php';
require_once 'usuarios.Model.php';
require_once 'tipo_usuario.Entidad.php';
require_once 'tipo_usuario.Model.php';
require_once 'tipo_documento.Entidad.php';
require_once 'tipo_documento.Model.php';
require_once 'genero.Entidad.php';
require_once 'genero.Model.php';



// Logica de negocio
$alm = new Usuarios();
$model = new UsuariosModel();

if(isset($_REQUEST['action']))
{
    switch($_REQUEST['action'])
    {
        case 'actualizar':
            $alm->__SET('id_usuario',              $_REQUEST['id_usuario']);
            $alm->__SET('tipo_usuario',          $_REQUEST['tipo_usuario']);
            /*$alm->__SET('tipo_documento',          $_REQUEST['tipo_documento']);*/
            $alm->__SET('documento_usuario',        $_REQUEST['documento_usuario']);
            $alm->__SET('pnombre_usuario',        $_REQUEST['pnombre_usuario']);
            $alm->__SET('snombre_usuario',       $_REQUEST['snombre_usuario']);
            $alm->__SET('papellido_usuario',          $_REQUEST['papellido_usuario']);
            $alm->__SET('sapellido_usuario',          $_REQUEST['sapellido_usuario']);
            $alm->__SET('cel_usuario',          $_REQUEST['cel_usuario']);
            $alm->__SET('tel_usuario',        $_REQUEST['tel_usuario']);
            $alm->__SET('genero',       $_REQUEST['genero']);
            $alm->__SET('email_usuario',       $_REQUEST['email_usuario']);

            $model->Actualizar($alm);
            header('Location: usuarios.php');
            break;

        case 'registrar':
             $alm->__SET('id_usuario',              $_REQUEST['id_usuario']);
            $alm->__SET('tipo_usuario',          $_REQUEST['tipo_usuario']);
            /*$alm->__SET('tipo_documento',          $_REQUEST['tipo_documento']);*/
            $alm->__SET('documento_usuario',        $_REQUEST['documento_usuario']);
            $alm->__SET('pnombre_usuario',        $_REQUEST['pnombre_usuario']);
            $alm->__SET('snombre_usuario',       $_REQUEST['snombre_usuario']);
            $alm->__SET('papellido_usuario',          $_REQUEST['papellido_usuario']);
            $alm->__SET('sapellido_usuario',          $_REQUEST['sapellido_usuario']);
            $alm->__SET('cel_usuario',          $_REQUEST['cel_usuario']);
            $alm->__SET('tel_usuario',        $_REQUEST['tel_usuario']);
            $alm->__SET('genero',       $_REQUEST['genero']);
            $alm->__SET('email_usuario',       $_REQUEST['email_usuario']);

            $model->Registrar($alm);
            header('Location: usuarios.php');
            break;

        case 'eliminar':
            $model->Eliminar($_REQUEST['id_usuario']);
            header('Location: usuarios.php');
            break;

        case 'editar':
            $alm = $model->Obtener($_REQUEST['id_usuario']);
            break;
    }
<!DOCTYPE html>
<html lang="es">
    <head>

    <h1>FORMULARIO DE ENTRADA...</h1><h1>PARAMETROS DE usuariosES</h1><br><br>

        <title>ADSI - FICHA - 1193334 G1</title>
        <link rel="stylesheet" href="http://yui.yahooapis.com/pure/0.5.0/pure-min.css">
    </head>
    <body style="padding:15px;">

        <div class="pure-g">
            <div class="pure-u-1-12">

                <form action="?action=<?php echo $alm->id_usuario > 0 ? 'actualizar' : 'registrar'; ?>" method="post" class="pure-form pure-form-stacked" style="margin-bottom:30px;">
                    <input type="hidden" name="id_usuario" value="<?php echo $alm->__GET('id_usuario'); ?>" />

                    <table style="width:500px;">
                        <tr>
                            <th style="text-align:left;">d_tipo_usuario</th>
                            <td>
                                <select name="tipo_usuario" style="width:100%;">
                                    <option value="0">--Seleccione--</option>
                                    <?php
                                        $trol = new T_usuarioModel();
                                        foreach($trol->Listar() as $td):
                                    ?>
                                    <option value="<?php echo $td->__GET('idtipo_usuario') ?>"
                                    <?php echo $td->__GET('idtipo_usuario') == $alm->__GET('idtipo_usuario') ? 'selected' : ''?>>
                                    <?php echo $td->__GET('d_tipo_usuario') ?></option>
                                    <?php endforeach; ?>    
                                </select>
                             </td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">d_tipo_documento</th>
                            <td>
                                <select name="tipodocu" style="width:100%;">
                                    <option value="0">--Seleccione--</option>
                                    <?php
                                        $trol = new T_documentoModel();
                                        foreach($trol->Listar() as $td):
                                    ?>
                                    <option value="<?php echo $td->__GET('idtipo_documento') ?>"
                                    <?php echo $td->__GET('idtipo_documento') == $alm->__GET('idtipo_documento') ? 'selected' : ''?>>
                                    <?php echo $td->__GET('d_tipo_documento') ?></option>
                                    <?php endforeach; ?>    
                                </select>
                             </td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">documento_usuario</th>
                            <td><input type="text" name="documento_usuario" placeholder="documento_usuario" required="" value="<?php echo $alm->__GET('documento_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">pnombre_usuario</th>
                            <td><input type="text" name="pnombre_usuario" placeholder="pnombre_usuario" required="" value="<?php echo $alm->__GET('pnombre_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">snombre_usuario</th>
                            <td><input type="text" name="snombre_usuario" placeholder="snombre_usuario" required="" value="<?php echo $alm->__GET('snombre_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">papellido_usuario</th>
                            <td><input type="text" name="papellido_usuario" placeholder="papellido_usuario" required="" value="<?php echo $alm->__GET('papellido_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">sapellido_usuario</th>
                            <td><input type="text" name="sapellido_usuario" placeholder="sapellido_usuario" required="" value="<?php echo $alm->__GET('sapellido_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">cel_usuario</th>
                            <td><input type="text" name="cel_usuario" placeholder="cel_usuario" required="" value="<?php echo $alm->__GET('cel_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">tel_usuario</th>
                            <td><input type="text" name="tel_usuario" placeholder="tel_usuario" required="" value="<?php echo $alm->__GET('tel_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">d_genero</th>
                            <td>
                                <select name="genero" style="width:100%;">
                                    <option value="0">--Seleccione--</option>
                                    <?php
                                        $trol = new GeneroModel();
                                        foreach($trol->Listar() as $td):
                                    ?>
                                    <option value="<?php echo $td->__GET('idgenero') ?>"
                                    <?php echo $td->__GET('idgenero') == $alm->__GET('idgenero') ? 'selected' : ''?>>
                                    <?php echo $td->__GET('d_genero') ?></option>
                                    <?php endforeach; ?>    
                                </select>
                             </td>
                        </tr>
                        <tr>
                            <th style="text-align:left;">email_usuario</th>
                            <td><input type="text" name="email_usuario" placeholder="email_usuario" required="" value="<?php echo $alm->__GET('email_usuario'); ?>" style="width:100%;" /></td>
                        </tr>
                        <tr>
                            <td colspan="2">
                                <button type="submit" class="pure-button pure-button-primary">Guardar</button>
                            </td>
                        </tr>
                    </table>
                </form>

                <table class="pure-table pure-table-horizontal">
                    <thead>
                        <tr>
                            <th style="text-align:left;">tipo_usuario</th>
                            <th style="text-align:left;">tipo_documento</th>
                            <th style="text-align:left;">documento_usuario</th>
                            <th style="text-align:left;">pnombre_usuario</th>
                            <th style="text-align:left;">snombre_usuario</th>
                            <th style="text-align:left;">papellido_usuario</th>
                            <th style="text-align:left;">sapellido_usuario</th>
                            <th style="text-align:left;">cel_usuario</th>
                            <th style="text-align:left;">tel_usuario</th>
                            <th style="text-align:left;">mamalasgenero</th>
                            <th style="text-align:left;">email_usuario</th>



                            <th></th>
                            <th></th>
                        </tr>
                    </thead>
                    <?php foreach($model->Listar() as $r): ?>
                        <tr>
                            <td><?php echo $r->__GET('tipo_usuario'); ?></td>
                            <td><?php echo $r->__GET('tipo_documento'); ?></td>
                            <td><?php echo $r->__GET('documento_usuario'); ?></td>
                            <td><?php echo $r->__GET('pnombre_usuario'); ?></td>
                            <td><?php echo $r->__GET('snombre_usuario'); ?></td>
                            <td><?php echo $r->__GET('papellido_usuario'); ?></td>
                            <td><?php echo $r->__GET('sapellido_usuario'); ?></td>
                            <td><?php echo $r->__GET('cel_usuario'); ?></td>
                            <td><?php echo $r->__GET('tel_usuario'); ?></td>
                            <td><?php echo $r->__GET('genero'); ?></td>
                            <td><?php echo $r->__GET('email_usuario'); ?></td>

                            <td>
                                <a href="?action=editar&id_usuario=<?php echo $r->id_usuario; ?>">Editar</a>
                            </td>
                            <td>
                                <a href="?action=eliminar&id_usuario=<?php echo $r->id_usuario; ?>">Eliminar</a>
                            </td>
                        </tr>
                    <?php endforeach; ?>
                </table>     

            </div>
        </div>

    </body>
</html>

and

    
asked by Andres G1 06.11.2018 в 22:30
source

0 answers