Foros del Web » Programando para Internet » PHP »

PDO::prepare() no puedo hacer un insert

Estas en el tema de PDO::prepare() no puedo hacer un insert en el foro de PHP en Foros del Web. Muy buenos días. Tengo un problema al usar PDO para hacer un insert a una tabla. La versión que uso de PHP es la 7.2. ...
  #1 (permalink)  
Antiguo 23/05/2019, 09:12
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Información PDO::prepare() no puedo hacer un insert

Muy buenos días.

Tengo un problema al usar PDO para hacer un insert a una tabla.
La versión que uso de PHP es la 7.2.
Esta forma de hacerlo la uso desde hace un tiempo y me funciona sin problemas, pues no sé porque ahora me presenta este problema.
Lo más curioso es que si hago un select lo hace sin problemas.

Voy a poner el código PHP por partes:
1. SQL donde hago el insert :
Código PHP:
require_once("core/models/class.Conexion.php");

class 
Registros {

    private 
$con;
    public function 
__construct(){

        
$this->con = new Conexion();
    }

    public function 
Registrar_Asistencia($identificacion){
            try{
                
$query $this->con->prepare('INSERT INTO asistencia (identificacion_mie) values (?)');
                
$query->bindParam(1,$identificacion);
                
$query->execute();
                
$this->con->close_con();
            } catch(
PDOException $e){
                echo  
$e->getMessage();
             }
        } 
2. Clase que hace la Conexión a la base de datos:

Código PHP:
class Conexion extends PDO {
    private 
$database;
    private 
$host;
    private 
$dbuser;
  private 
$dns;
    private 
$pass;
    
//private $port;
  
private $dbh;

    public function 
__construct(){
        try{
            
$db_cfg = require_once("config/database.php");
      
$this->dns $db_cfg["dns"];
      
$this->database    =$db_cfg["database"];
            
$this->host     =$db_cfg["host"];
          
$this->dbuser        =$db_cfg["user"];
            
$this->pass        =$db_cfg["pass"];
          
//$this->tipo_de_base.':host='.$this->host.';dbname='.$this->nombre_de_base, $this->usuario, $this->contrasena
      
$this->dbh parent::__construct($this->dns.':host='.$this->host.';dbname='.$this->database$this->dbuser$this->pass, array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES  \'UTF8\''));

        } catch(
PDOException $e){
             echo  
$e->getMessage();
         }
    }

    
//función para cerrar una conexión pdo
    
public function close_con(){
         
$this->dbh null;
     }

3. Database.php: $db_cfg = require_once("config/database.php");

Código PHP:
return array(
  
"dns"       =>"mysql",
  
"host"      =>"localhost",
  
"user"      =>"root",
  
"pass"      =>"",
  
"database"  =>"asistencia_avivamiento_bd",
); 
y por ultimo es una tabla con tres campos en la que solo le estoy guardando la identificacion de tipo varchar. los otros campos pueden estar vacíos.

Gracias por sus ayudas y orientación.
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:
  #2 (permalink)  
Antiguo 24/05/2019, 21:28
Avatar de enlinea777  
Fecha de Ingreso: mayo-2008
Ubicación: frente al pc
Mensajes: 1.830
Antigüedad: 15 años, 11 meses
Puntos: 127
Respuesta: PDO::prepare() no puedo hacer un insert

$query->bindParam(1,$identificacion);

estas pasando 2 parametros y la query solo espera uno, asi a simple vista
  #3 (permalink)  
Antiguo 24/05/2019, 21:31
Avatar de laureano59  
Fecha de Ingreso: febrero-2005
Mensajes: 395
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: PDO::prepare() no puedo hacer un insert

es parte de la sintaxis de PDO mira este insert:

Código PHP:
Ver original
  1. $stmt = $db->prepare("INSERT INTO Clientes (nombre, ciudad, contacto) VALUES (?, ?, ?)");
  2. $stmt->bindParam(1, $nombre);
  3. $stmt->bindParam(2, $ciudad);
  4. $stmt->bindParam(3, $contacto);
__________________
http://www.weblaum.com
Laureano Melo Medina
:arriba:

Etiquetas: funcion, insert, mysql, pdo, query, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:22.