Hola,
antes que nada queria decir que llevaba años sin tocar php y me he topado con un proyecto que he empezado pero me esta dando un fallo en el include y no sé como solventarlo.
EL sistema de directorios es el siguiente:
public_html-->webService --> Database.php
|
--> mysql_login.php
|
--> arqueta(DIR) --> arqueta.php
|
--> Obtener_arquetaById.php
cuando compruebo si funciona con:
http://105.5.10.222/~carmen/webService/arqueta/Obtener_arquetaById.php?idArqueta=1
el error es el siguiente:
Warning: require_once(webService/mysql_login.php) [function.require-once]: failed to open stream: No such file or directory in /home/carmen/public_html/webService/Database.php on line 7
Fatal error: require_once() [function.require]: Failed opening required 'webService/mysql_login.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/carmen/public_html/webService/Database.php on line 7
y los ficheros:
mysql_login.php
<?php
/**
* Provee las constantes para conectarse a la base de datos
* Mysql.
*/
define("HOSTNAME", "localhost");// Nombre del host define("DATABASE", "IoTBLE"); // Nombre de la base de datos define("USERNAME", "carmen"); // Nombre del usuario define("PASSWORD", "45kb-Ahu-eop-3dL"); // Nombre de la constraseña define("SET NAMES"."UTF-8")//Tipo de codificacion de la BD ?>
Database.php
<?php
/**
* Clase que envuelve una instancia de la clase PDO
* para el manejo de la base de datos
*/
require_once 'webService/mysql_login.php';
class Database
{
/**
* Única instancia de la clase
*/
private static $db = null;
/**
* Instancia de PDO
*/
private static $pdo;
final private function __construct()
{
try {
// Crear nueva conexión PDO
self::getDb();
} catch (PDOException $e) {
// Manejo de excepciones
}
}
/**
* Retorna en la única instancia de la clase
* @return Database|null
*/
public static function getInstance()
{
if (self::$db === null) {
self::$db = new self();
}
return self::$db;
}
/**
* Crear una nueva conexión PDO basada
* en los datos de conexión
* @return PDO Objeto PDO
*/
public function getDb()
{
if (self::$pdo == null) {
self::$pdo = new PDO(
'mysql:dbname=' . DATABASE .
';host=' . HOSTNAME .
';port:63343;',
USERNAME,
PASSWORD,
array(PDO
::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
// Habilitar excepciones
self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
return self::$pdo;
}
/**
* Evita la clonación del objeto
*/
final protected function __clone()
{
}
function _destructor()
{
self::$pdo = null;
}
}
?>
arqueta.php
require '/home/carmen/public_html/webService/Database.php';
class Arqueta
{
function __construct()
{
}
/**
* Retorna en la fila especificada de la tabla 'arqueta'
*
* @param $idArqueta Identificador del registro
* @return array Datos del registro
*/
public static function GetAll()
{
$consulta = "SELECT * FROM arqueta";
try {
// Preparar sentencia
$comando = Database::getInstance()->getDb()->prepare($consulta);
// Ejecutar sentencia preparada
$comando->execute();
return $comando->fetchAll(PDO::FETCH_ASSOC);
} catch (PDOException $e) {
return false;
}
}
/**
* Obtiene los campos de una arqueta con un identificador
* determinado
*
* @param $idArqueta Identificador de la arqueta
* @return mixed
*/
public static function GetById($idArqueta)
{
// Consulta de la arqueta
$consulta = "SELECT *
FROM arqueta
WHERE id = ?";
try {
// Preparar sentencia
$comando = Database::getInstance()->getDb()->prepare($consulta);
// Ejecutar sentencia preparada
$comando->execute(array($idArqueta)); // Capturar primera fila del resultado
$row = $comando->fetch(PDO::FETCH_ASSOC);
return $row;
} catch (PDOException $e) {
// Aquí puedes clasificar el error dependiendo de la excepción
// para presentarlo en la respuesta Json
return -1;
}
}
/**
* Actualiza un registro de la bases de datos basado
* en los nuevos valores relacionados con un identificador
*
* @param $idArqueta
* @param $insert_time
* @param $nombre_arqueta
* @param $direccion_arqueta
* @param $uuid_sensor1
* @param $uuid_sensor2
* @param $uuid_sensor3
*/
public static function Update(
$idArqueta,
$insert_time,
$nombre_arqueta,
$direccion_arqueta,
$uuid_sensor1,
$uuid_sensor2,
$uuid_sensor3
)
{
// Creando consulta UPDATE
$consulta = "UPDATE arqueta" .
" SET insert_time=?, nombre_arqueta=?, direccion_arqueta=?, uuid_sensor1=?, uuid_sensor2=?, uuid_sensor3=? " .
"WHERE id=?";
// Preparar la sentencia
$cmd = Database::getInstance()->getDb()->prepare($consulta);
// Relacionar y ejecutar la sentencia
$cmd->execute(array($insert_time, $nombre_arqueta, $fdireccion_arqueta, $uuid_sensor1, $uuid_sensor2, $uuid_sensor3, $idArqueta));
return $cmd;
}
/**
* Insertar una nueva arqueta
*
* @return PDOStatement
*/
public static function Insertar(
$insert_time,
$nombre_arqueta,
$direccion_arqueta,
$uuid_sensor1,
$uuid_sensor2,
$uuid_sensor3
)
{
// Sentencia INSERT
$comando = "INSERT INTO arqueta ( " .
" insert_time," .
" nombre_arqueta," .
" direccion_arqueta," .
" uuid_sensor1," .
" uuid_sensor2," .
" uuid_sensor3)" .
" VALUES( ?,?,?,?,?,? )";
// Preparar la sentencia
$sentencia = Database::getInstance()->getDb()->prepare($comando);
return $sentencia->execute(
$insert_time,
$nombre_arqueta,
$direccion_arqueta,
$uuid_sensor1,
$uuid_sensor2,
$uuid_sensor3
)
);
}
/**
* Eliminar el registro con el identificador especificado
*
* @param $idArqueta identificador de la arqueta
* @return bool Respuesta de la eliminación
*/
public static function Delete($idArqueta)
{
// Sentencia DELETE
$comando = "DELETE FROM arqueta WHERE id=?";
// Preparar la sentencia
$sentencia = Database::getInstance()->getDb()->prepare($comando);
return $sentencia->execute(array($idArqueta)); }
}
?>
Obtener_arquetaById.php
<?php
//obtenemos un arqueta por id.
require "Arqueta.php";
if($_SERVER['REQUEST_METHOD'] == 'GET')
{
if(isset($_GET['idArqueta'])) {
$idArqueta = $_GET['idArqueta'];
$arqueta = Informes::getById($idArqueta);
if($arqueta)
{
$datos['estado'] = 1;
$datos['arqueta'] = $arqueta;
}
else
{
$datos['estado'] = 2;
$datos['mensaje'] = 'Ha ocurrido un error.';
}
}
else
{
$datos['estado'] = 3;
$datos['mensaje'] = 'Se necesita un identificador.';
}
}
?>
A que se debe el error?
PD: datos de la base de datos, contraseñas son ficticios.
muchísimas gracias gracias llevabas razón ha sido cambiarlo y listo.
pero ahora tengo una duda cual es la diferencia entre require and require_once?
Uff esto es un problema enorme en proyectos grandes, yo te recomiendo usar namespaces en PHP, es una solución muy pero muy comoda.