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