{"id":5384,"date":"2026-01-20T12:16:56","date_gmt":"2026-01-20T11:16:56","guid":{"rendered":"https:\/\/sutilweb.eu\/?page_id=5384"},"modified":"2026-01-20T12:16:58","modified_gmt":"2026-01-20T11:16:58","slug":"55-obtener-registros-de-una-bbdd-mysql-con-php","status":"publish","type":"page","link":"https:\/\/sutilweb.eu\/index.php\/lenguajes\/php\/php-practico\/55-obtener-registros-de-una-bbdd-mysql-con-php\/","title":{"rendered":"55. Obtener registros de una BBDD MySQL con PHP"},"content":{"rendered":"\n<p>En cap\u00edtulos pasados hab\u00edamos creado un modelo en el cual nos conect\u00e1bamos a una base de datos, establec\u00edamos consultas a dicha base de datos y recuper\u00e1bamos la informaci\u00f3n de la consulta de la base de datos, ya sea un \u00fanico registro o un conjunto de registros.<\/p>\n\n\n\n<p>Tambi\u00e9n hab\u00edamos especificado que por cada tabla que tuvi\u00e9ramos en nuestra base de datos \u00edbamos a crear un&nbsp;nuevo modelo, por ejm el modelo <em>Contact.php<\/em> se iba a encargar de conectarse con una tabla denominada contacts. Si tuvi\u00e9semos una tabla denominada users crear\u00edamos un modelo llamado <em>User.php<\/em>.<\/p>\n\n\n\n<p>Como vamos a crear varios modelos, ser\u00eda algo complicado definir todo lo que hemos definido en Contact.php para cada uno de los modelos que tengamos que crear. Para evitar tener que estar escribiendo nuevamente todo, lo que vamos a hacer es crear un modelo base para todos los modelos que vayamos a crear, a dicho modelo le vamos a llamar&nbsp;<em>Model.php<\/em>. Todos los modelos que creemos se van a extender de dicho modelo.<\/p>\n\n\n\n<p><em>Models\/Model.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Models;\n\nuse mysqli;\n\nclass Model \n{\n  \/\/ Propiedades que recogen los datos de acceso a la BBDD\n  protected $db_host = DB_HOST;\n  protected $db_user = DB_USER;\n  protected $db_pass = DB_PASS;\n  protected $db_name = DB_NAME;\n\n  \/\/ Propiedad que recoge la conexi\u00f3n a la base de datos\n  protected $connection;\n\n  \/\/ Propiedad que recoge la consulta a la BBDD\n  protected $query;\n\n  public function __construct(){\n    $this->connection();\n  }\n\n  \/\/ M\u00e9todo encargado de realizar la conexi\u00f3n\n  public function connection(){\n    \/\/ Conexi\u00f3n con mysqli\n    $this->connection =  new mysqli($this->db_host, $this->db_user, $this->db_pass, $this->db_name);\n\n    if($this->connection->connect_error)\n    {\n      die('Error de conexi\u00f3n: ' . $this->connection->connect_error);\n    }\n  }\n\n  \/\/ M\u00e9todo que hace la consulta a la base de datos\n  public function query($sql){\n    $this->query = $this->connection->query($sql);\n\n    return $this;\n  }\n\n  \/\/ M\u00e9todo que recupera el primer registro de la consulta a la base de datos\n  public function first(){\n    return $this->query->fetch_assoc();\n  }\n\n  \/\/ M\u00e9todo que recupera todos los registros de la consulta a la base de datos\n  public function get(){\n    return $this->query->fetch_all(MYSQLI_ASSOC);\n  }\n\n  \/\/ Consultas\n  \/\/ M\u00e9todo que nos devolver\u00e1 todos los registros de una determinada tabla\n  public function all(){\n    $sql = \"SELECT * FROM {$this->table}\";\n    return $this->query($sql)->get();\n  }\n  \n  \/\/ Recuperar determinado registro por su id\n  public function find($id){\n    \/\/ SELECT * FROM contacts WHERE id = 1\n    $sql = \"SELECT * FROM {$this->table} WHERE id = {$id}\";\n    return $this->query($sql)->first();\n  }\n  \n  \/\/ M\u00e9todo para filtrar registros\n  public function where($column, $operator, $value = null){\n    if($value == null){\n      $value = $operator;\n      $operator = '=';\n    }\n\n    \/\/ SELECT * FROM contacts WHERE name = 'Francisco'\n    $sql = \"SELECT * FROM {$this->table} WHERE {$column} {$operator} '{$value}'\";\n    $this->query($sql);\n\n    return $this;\n  }\n}<\/code><\/pre>\n\n\n\n<p>Tambi\u00e9n vamos a modificar el archivo&nbsp;<em>Contacts.php<\/em>.<\/p>\n\n\n\n<p><em>Models\/Contact.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Models;\n\nclass Contact extends Model\n{\n  protected $table = 'contacts';\n}<\/code><\/pre>\n\n\n\n<p>Y tambi\u00e9n vamos a modificar el archivo&nbsp;<em>HomeController.php<\/em>.<\/p>\n\n\n\n<p><em>Controllers\/HomeController.php<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Controllers;\n\nuse App\\Models\\Contact;\n\nclass HomeController extends Controller\n{\n  public function index()\n  {\n    $contactModel = new Contact();\n\n    \/\/ Le decimos al modelo que haga la siguiente consulta\n    return $contactModel->where('id', '>', 1)->get();\n\n    \/\/ M\u00e9todo que se encarga de incluir toda la l\u00f3gica necesaria para mostrar contenido\n    return $this->view('home', &#91;\n      'title' => 'Home',\n      'description' => 'Esta es la p\u00e1gina Home'\n    ]);\n  }\n}<\/code><\/pre>\n\n\n\n<p>A lo largo de este cap\u00edtulo hemos visto como podemos extraer de manera r\u00e1pida informaci\u00f3n de nuestra base de datos.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En cap\u00edtulos pasados hab\u00edamos creado un modelo en el cual nos conect\u00e1bamos a una base de datos, establec\u00edamos consultas a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":4518,"menu_order":54,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_uag_custom_page_level_css":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-5384","page","type-page","status-publish","hentry"],"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false},"uagb_author_info":{"display_name":"Sutil Web","author_link":"https:\/\/sutilweb.eu\/index.php\/author\/sutilweb\/"},"uagb_comment_info":0,"uagb_excerpt":"En cap\u00edtulos pasados hab\u00edamos creado un modelo en el cual nos conect\u00e1bamos a una base de datos, establec\u00edamos consultas a [&hellip;]","_links":{"self":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/comments?post=5384"}],"version-history":[{"count":3,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5384\/revisions"}],"predecessor-version":[{"id":5387,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/5384\/revisions\/5387"}],"up":[{"embeddable":true,"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/pages\/4518"}],"wp:attachment":[{"href":"https:\/\/sutilweb.eu\/index.php\/wp-json\/wp\/v2\/media?parent=5384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}