{"id":428,"date":"2016-02-09T13:28:09","date_gmt":"2016-02-09T11:28:09","guid":{"rendered":"http:\/\/luismaseda.com\/wp\/?p=428"},"modified":"2016-02-09T13:34:37","modified_gmt":"2016-02-09T11:34:37","slug":"valores-devueltos-por-mysqli","status":"publish","type":"post","link":"https:\/\/luismaseda.com\/wp\/?p=428","title":{"rendered":"Valores devueltos por Mysqli"},"content":{"rendered":"<p>Un problema que me ha costado mucho solucionar ha sido entender el funcionamiento de <strong>mysqli<\/strong>.<\/p>\n<p>Veamos los distintos conceptos:<\/p>\n<p><strong>mysqli_query<\/strong> \u2014 Realiza una consulta a la Base de Datos<\/p>\n<p>Si no devuelve resultados es que se trata de consultas de creaci\u00f3n, borrado, inserci\u00f3n y actualizaci\u00f3n en la base de datos. De momento eso no se tratar\u00e1 en este art\u00edculo.<\/p>\n<p>Cuando devuelve resultados esta consulta se ejecutar\u00e1 acompa\u00f1ada con una sentencia <strong>SELECT<\/strong> sobre la base de datos.<\/p>\n<p>En ese momento pueden ocurrir dos cosas, que devuelva datos o que no encuentre datos.<\/p>\n<p>Si no encuentra datos devolver\u00e1 un error, por eso cada vez que hacemos una consulta con <strong>SELECT<\/strong> a la base de datos hay que preguntar por un posible error.<\/p>\n<p>Yo utilizo la siguiente secuencia en mis modelos:<\/p>\n<div class=\"su-note\"  style=\"border-color:#d6d6c0;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#f0f0da;border-color:#ffffff;color:#000;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><\/p>\n<p>$mysqli = new mysqli(&#8216;localhost&#8217;, &#8216;root&#8217;, \u00bb, &#8216;mispartidas&#8217;);<\/p>\n<p>\/\/Indicar a la conexi\u00f3n de mysqli que use la codificacion UTF8 \u00a1\u00a1\u00a1MUY IMPORTANTE!!!<br \/>\nmysqli_set_charset($mysqli,\u00bbutf8&#8243;);<\/p>\n<p>if ($mysqli-&gt;connect_errno) {<br \/>\necho \u00abFall\u00f3 la conexi\u00f3n a MySQL: (\u00bb . $mysqli-&gt;connect_errno . \u00ab) \u00bb . $mysqli-&gt;connect_errno;<br \/>\n}<\/p>\n<p><\/div><\/div>\n<p>Si hay resultados es donde he encontrado m\u00e1s dificultad para entender como se tratan los mismos.<\/p>\n<p>El resultado es un conjunto de filas de la base de datos que cumplen la condici\u00f3n de la <strong>SELECT<\/strong>.<\/p>\n<p>Los datos recibidos se muestran con distintos m\u00e9todos.<\/p>\n<p>Pongamos el ejemplo de una consulta en la que queremos <strong>obtener un \u00fanico dato<\/strong>. El ejemplo es obtener de la tabla torneos el nombre de un torneo en concreto.<\/p>\n<div class=\"su-note\"  style=\"border-color:#d6d6c0;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#f0f0da;border-color:#ffffff;color:#000;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><\/p>\n<p>$resultado4 = $mysqli-&gt;query(\u00abSELECT mt_torneo FROM torneos WHERE mt_cdgo = &#8216;$id'\u00bb);<\/p>\n<p>$linea = mysqli_fetch_array($resultado4);<\/p>\n<p>return $linea[\u00abmt_torneo\u00bb];<\/p>\n<p><\/div><\/div>\n<p>En <strong>$resultado4<\/strong> llega un array con s\u00f3lo una fila de la base de datos y con un solo campo <strong>mt_torneo<\/strong>, pero para poder tratarlo como un dato individual hay que extraerlas del array mediante <strong>mysqli_fetch_array($resultado4)<\/strong> y luego acceder al dato mediante <strong>$linea[\u00abmt_torneo\u00bb]<\/strong>.<\/p>\n<hr \/>\n<p>Si lo que se obtiene es un numero indeterminado de filas de la base de datos entonces lo que hay que hacer es rellenar un array que contendra todas las filas obtenidas.<\/p>\n<p>Por ejemplo como la siguiente secuencia en uno de mis modelos:<\/p>\n<div class=\"su-note\"  style=\"border-color:#d6d6c0;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><div class=\"su-note-inner su-u-clearfix su-u-trim\" style=\"background-color:#f0f0da;border-color:#ffffff;color:#000;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;\"><\/p>\n<p>$resultado = $mysqli-&gt;query(\u00abSELECT * FROM partidas WHERE mp_cdgotorneo = &#8216;$id&#8217; ORDER BY mp_ronda ASC \u00ab);<\/p>\n<p>$resultado = $mysqli-&gt;query(\u00abSELECT * FROM partidas WHERE mp_cdgotorneo = &#8216;$id&#8217; ORDER BY mp_ronda ASC \u00ab);<\/p>\n<p>while ($fila = mysqli_fetch_array($resultado)) {<br \/>\necho \u00abTorneo: \u00bb . $fila[&#8216;mt_anyo&#8217;] . \u00bb &#8211; \u00bb . $fila[&#8216;mt_torneo&#8217;] . \u00ab&lt;br \/&gt;\u00bb;<br \/>\n}<\/p>\n<p><\/div><\/div>\n<p>En <strong>$resultado<\/strong> llega un array con varias filas de la base de datos con todos sus campos (columnas) pero para poder tratarlo como datos hay que extraerlo del array mediante <strong>mysqli_fetch_array($resultado)<\/strong> y luego acceder a los dato mediante un while que recorre el array y podemos referenciar los campos de cada fila usando como indice el nombre del campo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un problema que me ha costado mucho solucionar ha sido entender el funcionamiento de mysqli. Veamos los distintos conceptos: mysqli_query \u2014 Realiza una consulta a la Base de Datos Si no devuelve resultados es que se trata de consultas de &hellip; <a href=\"https:\/\/luismaseda.com\/wp\/?p=428\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[3],"tags":[16,28,11,4],"class_list":["post-428","post","type-post","status-publish","format-standard","hentry","category-desarrollo-web","tag-base-de-datos","tag-modelo","tag-mysql","tag-php-2"],"_links":{"self":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/428","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=428"}],"version-history":[{"count":9,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/428\/revisions"}],"predecessor-version":[{"id":439,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=\/wp\/v2\/posts\/428\/revisions\/439"}],"wp:attachment":[{"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=428"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=428"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luismaseda.com\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=428"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}