{"id":3987,"date":"2023-03-21T23:30:19","date_gmt":"2023-03-22T05:30:19","guid":{"rendered":"https:\/\/linuxitos.com\/main\/?p=3987"},"modified":"2023-03-21T23:30:20","modified_gmt":"2023-03-22T05:30:20","slug":"clase-pdo-para-acceder-a-base-de-datos-mysql-mariadb","status":"publish","type":"post","link":"https:\/\/linuxitos.com\/main\/clase-pdo-para-acceder-a-base-de-datos-mysql-mariadb\/","title":{"rendered":"Clase PDO para acceder a base de datos MySQL\/MariaDB"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/03\/pdo_class_database.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"512\" src=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/03\/pdo_class_database.png\" alt=\"\" class=\"wp-image-3988\" srcset=\"https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/03\/pdo_class_database.png 1024w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/03\/pdo_class_database-300x150.png 300w, https:\/\/linuxitos.com\/main\/wp-content\/uploads\/2023\/03\/pdo_class_database-768x384.png 768w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">Contexto<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando se inicia el aprendizaje de desarrollo con PHP, en un determinado momento se requiere de crear una clase o m\u00e9todos para acceder a la base de datos. Y muchas ocasiones no se necesita utilizar un framework completo, o algo m\u00e1s complejo. Por lo que decid\u00ed compartir con ustedes una de las clases que us\u00e9 para proyectos desarrollados desde cero en PHP. Es una clase simple y f\u00e1cil de utilizar, que permite acceder a la base de datos ya sea en MySQL o MariaDB, sin embargo se puede modificar u ajustar para utilizarlo con SQL server o bien PostgreSQL<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Archivos<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">El proyecto completo lo pueden <a rel=\"noreferrer noopener\" href=\"https:\/\/gitlab.com\/ferm\/clase-php-pdo-base-de-datos\" target=\"_blank\">descargar desde el repositorio de gitlab.<\/a> y probarlo directamente.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Requerimientos<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>PHP &gt; 7.2<\/li>\n\n\n\n<li>PDO &gt; 7<\/li>\n\n\n\n<li>MySQL, MariaDB (Previamente instalar alguna base de datos basadas en mysql)<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Archivo Config.php<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9ste archivo contendr\u00e1 los acceso para la base de datos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\ndate_default_timezone_set('America\/Mexico_City');\n\ndefine(\"DB_HOST\",         \"localhost\");\ndefine(\"DB_USER\",         \"root\");\ndefine(\"DB_PASS\",         \"\");\ndefine(\"DB_NAME\",         \"base_de_datos\");\ndefine(\"DB_PORT\",         \"3306\");\ndefine(\"DB_CHARSET\",     \"latin1\");<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Archivo Init.php<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\u00c9ste archivo contendr\u00e1 las declaraciones de las clases que se creen dentro de la carpeta class y que se requieran en el proyecto.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\n\/\/ Se inicia sesi\u00f3n\nsession_start();\n\n\/\/ Se incluye archivo de configuraci\u00f3n\nrequire_once('Config.php');\nfunction autoLoadClass($class)\n{\n\trequire_once('classes\/'.$class.'.php');\n}\n\nspl_autoload_register('autoLoadClass');<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Uso<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una vez configurado los archivos Init.php y Config.php, ahora es necesario crear una clase, de preferencia del mismo nombre que la tabla que contenga.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Como ejemplo, se usar\u00e1 la base de datos que viene en \u00e9ste repositorio:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">User.php<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nclass User\n{\n\t\/\/ Inicializando variable\n\tprivate $db;\n\tprivate $table;\n\t\/*\n\t* Constructor de la clase\n\t*\/\n\n\tpublic function __construct()\n\t{\n\t\t$this->db = new Database;\n\t\t$this->table = \"users\";\n\t}\n\n\tpublic function agregarRegistro($data)\n\t{\n\t\tif ($this->db->insert(\"users\", $data)) {\n\t\t\t$last_id = $this->db->lastInsertId();\n\t\t\t$this->db->query(\"SELECT * FROM \" . $this->table . \" WHERE id=:id;\");\n\t\t\t$this->db->bind(':id', $last_id, PDO::PARAM_INT);\n\t\t\t$result = $this->db->single();\n\t\t\treturn $result;\n\t\t} else {\n\t\t\treturn 0;\n\t\t}\n\t}\n\n\tpublic function usuarios()\n\t{\n\t\t$this->db->query(\"SELECT * FROM \" . $this->table . \";\");\n\t\t$resultados = $this->db->resultset();\n\t\treturn $resultados;\n\t}\n\n\tpublic function actualizarRegistro($data, $id)\n\t{\n\t\tif ($this->db->updates($this->table, $data, $id)) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tpublic function eliminarRegistro($id)\n\t{\n\t\tif ($this->db->deletes($this->table, $id)) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t}\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Acceder a los datos<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Archivo index.php<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para acceder a los datos, se crear\u00e1 un objeto de la clase y se acceder\u00e1n a sus m\u00e9todos:<br>Crear un archivo index.php y probar lo siguiente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\nrequire('Init.php');\n\n\/\/ se crea el objeto a partir de la clases.\n$user = new User;\n\n\/\/ dentro de la clase User se crear\u00e1n los m\u00e9todos necesarios\n\/\/Insertando registro\n$newUser = &#91;\n\t'name' => 'Jorge',\n\t'last_name' => 'Udemy',\n\t'email' => 'andrew@gmail.com',\n\t'gender' => 'Male',\n\t'hobbie' => 'Coding',\n\t'country' => 'Usa',\n];\n\n$usuarioNuew = $user->agregarRegistro($newUser);\necho $usuarioNuew->name . '&lt;br>';\necho $usuarioNuew->last_name . '&lt;br>';\necho $usuarioNuew->email . '&lt;br>';\n\n\n\/\/Listando registros\necho '&lt;table>\n&lt;thead>\n  &lt;tr>\n\t&lt;th>#&lt;\/th>\n\t&lt;th>Nambe&lt;\/th>\n\t&lt;th>Last&lt;\/th>\n\t&lt;th>Email&lt;\/th>\n  &lt;\/tr>\n&lt;\/thead>\n&lt;tbody>';\n\n$i = 1;\nforeach ($user->usuarios() as $u) {\n\techo '&lt;tr>\n\t\t\t&lt;th scope=\"row\">' . $i . '&lt;\/th>\n\t\t\t&lt;td>' . $u->name . '&lt;\/td>\n\t\t\t&lt;td>' . $u->last_name . '&lt;\/td>\n\t\t\t&lt;td>' . $u->email . '&lt;\/td>\n\t\t&lt;\/tr>';\n\t$i++;\n}\necho '&lt;\/tbody>\n&lt;\/table>';\n\n\/\/actualizar un registro\n$datosUp&#91;'name'] = 'Jorge';\n$datosUp&#91;'last_name'] = 'Nitales Axules';\n$user->actualizarRegistro($datosUp, &#91;'id' => 23]);\n\n\/\/eliminar un registro\n$user->eliminarRegistro(4);<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Espero que les sea de utilidad, cualquier cambio, sugerencia, o reutilizaci\u00f3n del c\u00f3digo, lo pueden realizar. Pueden modificarlo como lo requieran.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Contexto Cuando se inicia el aprendizaje de desarrollo con PHP, en un determinado momento se requiere de crear una clase o m\u00e9todos para acceder a la base de datos. Y muchas ocasiones no se necesita utilizar un framework completo, o algo m\u00e1s complejo. Por lo que decid\u00ed compartir con ustedes una de las clases que [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":3988,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1889,1124,34,291,63,1541,1890,10],"tags":[1916,1915],"class_list":["post-3987","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-desarrollo-web","category-php-and-mysql","category-phpmyadmin","category-phppgadmin","category-proyecto-php","category-web-developer","category-web-development","category-xampp","tag-database","tag-pdo"],"_links":{"self":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/3987","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/comments?post=3987"}],"version-history":[{"count":2,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/3987\/revisions"}],"predecessor-version":[{"id":3990,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/posts\/3987\/revisions\/3990"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media\/3988"}],"wp:attachment":[{"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/media?parent=3987"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/categories?post=3987"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/linuxitos.com\/main\/wp-json\/wp\/v2\/tags?post=3987"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}