Foros del Web » Programando para Internet » PHP »

Símbolo Mayor en MySQLi

Estas en el tema de Símbolo Mayor en MySQLi en el foro de PHP en Foros del Web. Buenas! Estoy modificando un desarrollo realizado en PHP + MySQL para que utilice MySQLi. Tengo un problema al momento de realizar un If que para ...
  #1 (permalink)  
Antiguo 23/04/2017, 15:07
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años, 1 mes
Puntos: 12
Símbolo Mayor en MySQLi

Buenas! Estoy modificando un desarrollo realizado en PHP + MySQL para que utilice MySQLi. Tengo un problema al momento de realizar un If que para la versión de MySQL iba bien. Es el siguiente:

Código PHP:
if ($cuotas>2){
        
$recargo=1.0684;

Es muy simple lo que intento hacer y si reemplazo el > por un != ya deja de dar el error. ¿Puede que tenga que utilizar el símbolo de relación mayor de otro modo?

Muchas gracias.
  #2 (permalink)  
Antiguo 23/04/2017, 15:37
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Símbolo Mayor en MySQLi

Te debe estar tirando un string y no un número, aplica floatval a la cuota para arreglar el error, pero y si o si revisa la consulta y la base de datos que puede estar pasando.

Saludos.
  #3 (permalink)  
Antiguo 23/04/2017, 16:28
Avatar de petit89  
Fecha de Ingreso: marzo-2011
Mensajes: 1.139
Antigüedad: 13 años, 9 meses
Puntos: 171
Respuesta: Símbolo Mayor en MySQLi

Debes ocuparlo asi:

Código PHP:
Ver original
  1. if ($cuotas >= 2){
  2.         $recargo=1.0684;
  3. }
__________________
█ WebHosting / Reseller a bajo costo | Uptime Garantizado | Soporte en Español e Ingles
¿Te sirvió la respuesta? Deja un +1 (Triangulo negro al lado derecho)
  #4 (permalink)  
Antiguo 23/04/2017, 17:35
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años, 1 mes
Puntos: 12
Respuesta: Símbolo Mayor en MySQLi

Cita:
Iniciado por alvaro_trewhela Ver Mensaje
Te debe estar tirando un string y no un número, aplica floatval a la cuota para arreglar el error, pero y si o si revisa la consulta y la base de datos que puede estar pasando.

Saludos.
Este es el problema, pero en MySQL no da error. Traté de convertirlo como sugeriste pero sigue reventando:

Código PHP:
$cuotasf floatval($cuotas);

if (
$cuotasf 2)
{
        
$recargo=1.0684;

  #5 (permalink)  
Antiguo 23/04/2017, 18:12
alvaro_trewhela
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Símbolo Mayor en MySQLi

le puedes dar var_dump a la variable porfavor
  #6 (permalink)  
Antiguo 23/04/2017, 20:42
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años, 1 mes
Puntos: 12
Respuesta: Símbolo Mayor en MySQLi

Es que en realidad no está mostrando los datos. No sé si sea algo incorrecto en el mysqli:

Código PHP:
 $conexion=mysqli_connect("localhost","usuario","pass","base") or
    die(
"Problemas con la conexión");

$cuotas=$_POST['select2'];
echo 
$cuotas;

$cuotasf floatval($cuotas);
var_dump($cuotasf); 
  #7 (permalink)  
Antiguo 24/04/2017, 00:04
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Símbolo Mayor en MySQLi

Coloca todo tu código, al menos el involucrado en conexión y consultas; algunas funciones de mysqli difieren en cantidad y orden de parámetros respecto a mysql, tal vez por ahí está el error.

Por cierto, si estás obteniendo un mensaje de error, sería bueno que lo compartas, para no estar adivinando.
__________________
- León, Guanajuato
- GV-Foto
  #8 (permalink)  
Antiguo 24/04/2017, 06:55
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años, 1 mes
Puntos: 12
Respuesta: Símbolo Mayor en MySQLi

Es muy extraño ya que sólo en esta página me sucede que da error con los sñimbolos de mayoy y menor en varias partes. Por ejemplo:

Código HTML:
<td width="89" align="left" valign="middle" class="Estilo5">Forma de Pago </td>
                <td align="left"><select name="select" onchange="slctryole(this,this.form.formapago)" >
                    <option value="Efectivo" selected="selected">Efectivo</option>
                    <option value="TarjetadeDebito">Tarjeta de Debito</option>
                    <option value="TarjetadeCreditoAmerican">Tarjeta de Credito American Express</option>
                    <option value="TarjetadeCreditoCabal">Tarjeta de Credito Cabal</option>
                    <option value="TarjetadeCreditoMaster">Tarjeta de Credito Master</option>
                    <option value="TarjetadeCreditoVisa">Tarjeta de Credito Visa</option>
                  </select>
                    <select name="select2" >
                      <option></option>
                    </select></td>
                <td align="left"><input name="precio1" id="precio1" value='
Código PHP:
 <?php $conexion=mysqli_connect("localhost","usuario","pass","base") or
    die(
mysqli_connect_error());
$libro$_REQUEST['Codigo'];

$sentencia "select Precio from catalogo where ISBN='$libro'";
 
$resultado mysqli->query($sentencia);
 
$resultados $resultado->fetch_assoc($resultado);
 
echo 
$resultados["Precio"];
Esto de devuelve el error:

Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR) in venta.php on line 696

¿Alguna idea?
Muchas gracias.
  #9 (permalink)  
Antiguo 24/04/2017, 18:50
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Símbolo Mayor en MySQLi

No lo mencionas, pero, seguramente la línea del error es esta:

Código PHP:
Ver original
  1. $resultado = mysqli->query($sentencia);

mysqli_connect no te devuelve un objeto, entonces, deberías usar:

Código PHP:
Ver original
  1. $resultado = mysqli_query($conexion, $sentencia);
  2.  
  3. // Aquí deberías verificar si se obtuvo un registro
  4. // Seguramente usando mysqli_num_rows
  5. // Si es uno, entonces sí puedes continuar.
  6.  
  7. $resultados = mysqli_fetch_assoc($resultado);
__________________
- León, Guanajuato
- GV-Foto
  #10 (permalink)  
Antiguo 25/04/2017, 05:02
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Símbolo Mayor en MySQLi

Los tiros van por donde dice Triby

Código PHP:
Ver original
  1. <?php
  2. //aquí asignas la conexión a $conexion
  3. $conexion=mysqli_connect("localhost","usuario","pass","base") or
  4. $libro= $_REQUEST['Codigo'];
  5.  
  6. $sentencia = "select Precio from catalogo where ISBN='$libro'";
  7.  
  8. // de donde sale mysqli aquí ?
  9. //$resultado = mysqli->query($sentencia);
  10.  
  11. // debería se así
  12. $resultado = $conexion->query($sentencia);
  13.  
  14. $resultados = $resultado->fetch_assoc($resultado);
  15.  
  16. echo $resultados["Precio"];
__________________
Unset($vida['malRollo']);
  #11 (permalink)  
Antiguo 25/04/2017, 10:11
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Símbolo Mayor en MySQLi

xerifandtomas, seguro revisaste el manual?

Com dije antes, mysqli_connect() no devuelve un objeto, solo un enlace para la conexión. Cuando quieres trabajar con objetos solo usas $variable = new mysqli().
__________________
- León, Guanajuato
- GV-Foto
  #12 (permalink)  
Antiguo 26/04/2017, 08:13
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Símbolo Mayor en MySQLi

Cita:
Iniciado por Triby Ver Mensaje
xerifandtomas, seguro revisaste el manual?

Com dije antes, mysqli_connect() no devuelve un objeto, solo un enlace para la conexión. Cuando quieres trabajar con objetos solo usas $variable = new mysqli().
Fijate bien Triby no estoy diciendo que tu respuesta sea incorrecta.

Pero indaguemos el manual:
Cita:
mysqli_connect — Alias de mysqli::__construct()

Cita:
mysqli::__construct -- mysqli_connect — Abre una nueva conexión al servidor de MySQL

Devuelve un objeto que representa la conexión al servidor MySQL.
El problema aquí si te fijas es que no está utilizando el objeto devuelto por mysqli_connect

Código PHP:
<?php
$conexion
=mysqli_connect("localhost","usuario","pass","base") or 
    die(
mysqli_connect_error()); 
$resultado mysqli->query($sentencia); // mysqli aquí tal y como está representa una constante no un objeto.
// debería se así 
$resultado $conexion->query($sentencia);
Es verdad que esta mezclando estilos pero debería de ser válido igualmente. No tengo pc a mano para probarlo, pero lo haré por mera curiosidad.

Un saludo.
__________________
Unset($vida['malRollo']);

Última edición por xerifandtomas; 26/04/2017 a las 08:22
  #13 (permalink)  
Antiguo 26/04/2017, 10:48
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Símbolo Mayor en MySQLi

xerifandtomas, el problema es que no puedes mezclar los estilos:

mysqli_connect() no devuelve un objeto, sino un enlace, como lo hacía la obsoleta mysql_connect(), así el como funciona el "estilo" por procedimientos.

Si quieres trabajar objetos, debes instanciar la clase.

Revisa los ejemplos del manual, verás que no hay mezclas.
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 26/04/2017, 13:25
Avatar de kip13  
Fecha de Ingreso: agosto-2011
Mensajes: 167
Antigüedad: 13 años, 4 meses
Puntos: 13
Respuesta: Símbolo Mayor en MySQLi

Cita:
Iniciado por Triby Ver Mensaje
xerifandtomas, el problema es que no puedes mezclar los estilos:

mysqli_connect() no devuelve un objeto, sino un enlace, como lo hacía la obsoleta mysql_connect(), así el como funciona el "estilo" por procedimientos.

Si quieres trabajar objetos, debes instanciar la clase.

Revisa los ejemplos del manual, verás que no hay mezclas.
Es correcto lo que dices, no se deben mezclar los estilos, pero no porque no llegue a funcionar, si no mas bien por legibilidad de código...

Pero si es posible trabajar con los dos estilos, lo dice en la documentacion:

Cita:
Mezclar estilos

Es posible cambiar entre los estilos en cualquier momento. No se recomienda mezclar los dos estilos por razones de claridad y estilo de código.
Mezclar estilos


Si te fijas en la documentación tambien, leamos lo que dice de mysqli_connect()

Cita:
Esta función es un alias de: mysqli::__construct()
mysqli_connect

Asi que de alguna manera aquella funcion crea una instancia de la clase mysqli....

Aclaro que no estoy diciendo que esta bien hacerlo, eso esta muy mal, es mejor decidirse por uno, el que tengas mas claro y trabajar con el hasta el final !
  #15 (permalink)  
Antiguo 27/04/2017, 06:03
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 2 meses
Puntos: 123
Respuesta: Símbolo Mayor en MySQLi

Cita:
Iniciado por Triby Ver Mensaje
xerifandtomas, el problema es que no puedes mezclar los estilos:

Obviamente con mysqli_* si que se pueden mezclar estilos, si te fijas en el manual las funciones de mysqli son alias de los métodos en muchos casos.

Cita:
Iniciado por Triby Ver Mensaje
mysqli_connect() no devuelve un objeto, sino un enlace, como lo hacía la obsoleta mysql_connect(), así el como funciona el "estilo" por procedimientos.
mysqli_connect SI devuelve un objeto, nada que ver con la vieja mysql_connect, mysqli esta orientado a
POO aún que provea alias para trabajar en imperativo.

Cita:
Iniciado por Triby Ver Mensaje
Si quieres trabajar objetos, debes instanciar la clase.

Revisa los ejemplos del manual, verás que no hay mezclas.
Las funciones también pueden retornar objetos.

Hay muchas formas de instancia un objeto, no siempre tiene que ser de forma directa.

No se exactamente como estará construida mysqli_connect exactamente pero bien puedes hacer algo así para crear tu propio alias.

Código PHP:
Ver original
  1. function alias(/* parámetros */)
  2. {
  3.     return new mysqli(/* parámetros */);
  4. }
  5.  
  6. //Sí llamo a la función alias me retornará un objeto mysqli.
  7. $objMyConexion=alias(/* parámetros */);
  8.  
  9. // Más de lo mismo para el resto de alias de los métodos de mysqli.

Referente a la mezcla de estilos ya lo puso el compañero. ( +1 kip13 )

Cita:
Mezclar estilos (mysqli)

Es posible cambiar entre los estilos en cualquier momento. No se recomienda mezclar los dos estilos por razones de claridad y estilo de código.
__________________
Unset($vida['malRollo']);
  #16 (permalink)  
Antiguo 28/04/2017, 12:51
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Símbolo Mayor en MySQLi

Exactamente, ya leí y releí el manual.

Lamento la confusión.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: mayor, mysql, mysqli
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:01.