Les cuento, tengo dos clases creadas utilizando PDO, una es para manejar la base de datos. (conecta_bd.php)
Código PHP:
<?
class Capa_datos {
public static $db;
function conectaDb()
{
try {
$db = new PDO('mysql:dbname=datos;host=xxx.xx.xx.xxx', 'admin', 'xxxxx');
$db->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, TRUE);
return($db);
} catch (PDOException $e) {
print "<p>Error: No puede conectarse con la base de datos." . $e->getMessage() ." </p>\n";
exit();
}
}
function consulta($query){
$instancia=$this->conectaDb();
$res=$instancia->query($query);
return($res);
}
function ejecuta_query($query){
$instancia2=$this->conectaDb();
$count=$instancia2->exec($query);
return($count);
}
}
?>
Código PHP:
<?php
include('class/conecta_bd.php');
class Validador{
private $ins_db;
public function __construct(){
$ins_db=null;
}
function find_existe($id,$campo_id, $tabla, $campo_buscado)
/*busca la existencia (SI) en el campo señalado
* donde $id representa el valor clave, $tabla: la tabla donde se busca
* $campo_id es el nombre del campo clave y $campo_buscado es el nombre del campo que desemos evaluar
*/
{
$ok=false;
$ins_db = new Capa_datos;
$str_sql = "select $campo_buscado from $tabla where $campo_id = $id";
unset ($result);
$result=$ins_db->consulta($str_sql);
$rows = $result->fetch();
$dato = $rows[0];
if ($dato=='SI'){
$ok=true;
}
return($ok);
}
}
?>
estos programas llaman a validador.php que a su vez llama a conecta_bd.php
Ej.
Código PHP:
<?php
/*verificación de procedimiento 1*/
include ('class/validador.php');
$db = new Capa_datos;
$vl = new Validador;
$result=$db->consulta("SELECT * FROM inconcistencia_general where PROCED_TERM = '003'");
foreach ($result as $valor) {
$id=$valor[0];
$var_rut=$valor[3];
echo $id;
unset($errores);
$cont_error=0;
$sent = $vl->find_existe($id,'ID','inconcistencia_general',CAMPO1');
if ($sent==false){
$cont_error++;
$errores[$cont_error]='no registra ....';
}
$vl->NULL;
$cita_js = $vl->find_existe($id,'ID','inconcistencia_general','CAMPO2);
if ($cita_js==false){
$cont_error++;
$errores[$cont_error]='No registra constancia 2';
}
/*asi repite estas validaciones varias veces*/
if ($cont_error>0){
echo "se econtraron $cont_error errores en el RUT $valor[3];";
$str_error='"'.implode(",",$errores).'"';
$sql = "INSERT INTO `reporte_inconcistencia` ";
$sql.= "(`N1`, `N2`, `N3`, `N4`, `N5`, `error`)";
$sql.= "VALUES ('$var_rut', '', '', '', '', '$str_error')";
$cont=$db->ejecuta_query($sql);
echo $sql;
echo '<br>';
}
}
$db->NULL;
?>
Código PHP:
<?php
include ('class/validador.php');
$db = new Capa_datos;
$val = new Validador;
$result=$db->consulta("SELECT * FROM inconcistencia_general where PROCED = '002'");
foreach ($result as $valor) {
$id=$valor[0];
$var_rut=$valor[3];
unset($errores);
$cont_error=0;
$sent = $val->find_existe($id,'ID','inconcistencia_general','CAMPO1');
if ($sent==false){
$cont_error++;
$errores[$cont_error]='describe error 1...';
}
$cita = $val->find_existe($id,'ID','inconcistencia_general','CAMPO2');
if ($cita==false){
$cont_error++;
$errores[$cont_error]='describe error 2...';
}
if ($cont_error>0){
echo "se econtraron $cont_error errores en el ruc $valor[3];";
$str_error='"'.implode(",",$errores).'"';
$sql = "INSERT INTO `reporte_inconcistencia` ";
$sql.= "(`rut`, `n1`, `n2`, `n3`, `n4`, `error`)";
$sql.= "VALUES ('$var_rut', '', '', '', '', '$str_error')";
$cont=$db->ejecuta_query($sql);
echo $sql;
echo '<br>';
}
}
$db->NULL;
?>
Call to a member function fetch()
me pueden orientar para ver si el problema es en la creacion de las clase o que ?
saludos y se agradece.