Foros del Web » Programando para Internet » PHP »

Select y MYSQLI

Estas en el tema de Select y MYSQLI en el foro de PHP en Foros del Web. Hola estoy empezando a usar MYSQLI y cuando quiero hacer un Select de esta manera: Código PHP: $stmt =  $mysqli -> prepare ( "SELECT poscns, idcabll FROM turf_poscns Where idcabll= ? " ); ...
  #1 (permalink)  
Antiguo 25/05/2013, 11:14
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Select y MYSQLI

Hola estoy empezando a usar MYSQLI
y cuando quiero hacer un Select de esta manera:

Código PHP:

$stmt
$mysqli->prepare("SELECT poscns, idcabll FROM turf_poscns Where idcabll= ? ");

$stmt->bind_param("i",$idcaba)
$stmt ->bind_result($poscns); 
$stmt ->execute(); 
siendo idcabll numero entero
me da el siguiente error

Parse error: syntax error, unexpected '$stmt' (T_VARIABLE) in /var/www/web/web/madre/prueba.php on line 27

La linea 27 es : $stmt ->bind_result($poscns);

Muchas Gracias por la ayuda

Última edición por Agente1960; 25/05/2013 a las 11:23 Razón: Más datos
  #2 (permalink)  
Antiguo 25/05/2013, 11:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Select y MYSQLI

MYSQLI es una librería de PHP, y tu problema es un error en PHP, no en MySQL (Base de Datos).

Movido a PHP.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 25/05/2013, 11:57
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select y MYSQLI

Cita:
Iniciado por gnzsoloyo Ver Mensaje
MYSQLI es una librería de PHP, y tu problema es un error en PHP, no en MySQL (Base de Datos).

Movido a PHP.
Disculpa, no me di cuenta
  #4 (permalink)  
Antiguo 25/05/2013, 12:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Select y MYSQLI

Te hace falta un punto y coma en una de las lineas de tu código, y espero que nadie te de el código corregido para que pongas mas atención a lo que escribes.

Lo tienes frente y no lo ves, es el colmo de ser vago y no saber revisar ni su propio código.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 25/05/2013, 12:23
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select y MYSQLI

Cita:
Iniciado por pateketrueke Ver Mensaje
Te hace falta un punto y coma en una de las lineas de tu código, y espero que nadie te de el código corregido para que pongas mas atención a lo que escribes.

Lo tienes frente y no lo ves, es el colmo de ser vago y no saber revisar ni su propio código.
Compañero no es de vago hace rato que vengo lidiando, pero bueno lo corregí, pero sigo igual, solo que cambio el error
acá esta corregido

Código PHP:
$stmt$mysqli->prepare("SELECT poscns, idcabll FROM turf_poscns Where idcabll= ?");

$stmt->bind_param('i'$idcaba);
$stmt ->bind_result($poscns); 
$stmt ->execute(); 
y el error que es el habitual

Fatal error: Call to a member function bind_param() on a non-object in /var/www/web/web/madre/prueba.php on line 26

y te agradezco sy me podes ayudar de nuevo
  #6 (permalink)  
Antiguo 25/05/2013, 12:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Select y MYSQLI

Vale, no has quedado igual, que el error sea otro ya es avance.

Al parecer al ejecutar el método prepare() no está devolviendo un objeto, consulta el manual y depurar el error.

Es lo único que se entiende.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 25/05/2013, 17:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Select y MYSQLI

Pues probemos de validar el bind:
Código PHP:
Ver original
  1. <?php
  2. $stmt= $mysqli->prepare("SELECT poscns, idcabll FROM turf_poscns Where idcabll= ?");
  3.  
  4. if($stmt->bind_param('i', $idcaba))
  5.     {
  6.     $stmt ->bind_result($poscns);
  7.     $stmt ->execute();  
  8.     }
  9. ?>
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #8 (permalink)  
Antiguo 25/05/2013, 18:23
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select y MYSQLI

me da este error

Fatal error: Call to a member function bind_param() on a non-object in /var/www/web/web/madre/prueba.php on line 36
  #9 (permalink)  
Antiguo 25/05/2013, 18:33
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select y MYSQLI

Si lo escribo de esta manera funciona

Código PHP:

$SSQL3
= ("SELECT * FROM turf_poscns
            
        WHERE  turf_poscns.idcabll=5238
                
        "
) or die ("no se ha podido conectar");

if (
$result3 mysqli_query($mysqli$SSQL3)) {

while (
$Row3mysqli_fetch_array ($result3MYSQLI_ASSOC )){



$poscn=$Row3['poscn'];
$idcaba=$Row3['idcabll'];


echo 
" $poscn $idcaba </a> <br>"
  #10 (permalink)  
Antiguo 25/05/2013, 18:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Select y MYSQLI

Bueno, empecemos por el principio:
1) No vemos dónde creas $mysqli.
2) No nos estás mostrando de dónde toma el valor $idcaba.

A mi entender el problema está ates de todo esto. El que te esté diciendo que intentas ejecutar un bind_param() desde un no-objeto, implica para mi que lo que no existe o no está creado adecuadamente es el $mysqli, ya que el $stmt es el resultado de un prepare sobre él.

Muestranos todo el código implicado.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #11 (permalink)  
Antiguo 25/05/2013, 18:54
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select y MYSQLI

el
$idcaba=5238 ;
lo tengo definido ahi y la coneccion que es $mysqli funciona, porque fijate que reemplaze el select anterior por el último y funciona perfecto, incluso poniendo la variable en el where
  #12 (permalink)  
Antiguo 25/05/2013, 18:58
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select y MYSQLI

Modifique el primer select de esta manera, le puse * a los campos

Código PHP:
$stmt$mysqli->prepare("SELECT * FROM turf_poscns Where idcabll= ? ");

$stmt->bind_param('i',5238);
$stmt ->bind_result($poscn); 
$stmt ->execute(); 
y ahora me da este error

Fatal error: Cannot pass parameter 2 by reference in /var/www/web/web/madre/prueba.php on line 26

la línea 26 es esta

$stmt->bind_param('i',5238);
  #13 (permalink)  
Antiguo 25/05/2013, 19:25
 
Fecha de Ingreso: enero-2013
Mensajes: 62
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: Select y MYSQLI

Perdona lo hice ahora con el if, pero el error es el mismo

Código PHP:

$stmt
$mysqli->prepare("SELECT poscn, idcabll FROM turf_poscns Where idcabll= ?");

 

if(
$stmt->bind_param("i"5238))

{

$stmt ->bind_result($poscns); 

$stmt ->execute();  

   } 
y el error es el mismo

Fatal error: Cannot pass parameter 2 by reference in /var/www/web/web/madre/prueba.php on line 36
  #14 (permalink)  
Antiguo 22/10/2013, 14:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Select y MYSQLI

Tienes que usar forzosamente una variable, y tienes que verificar el resultado:
Código PHP:
Ver original
  1. $stmt = $mysqli->prepare("query");
  2. if (!$stmt) {
  3.       thow new RuntimeException($mysqli->error);
  4. }
  5.  
  6. $stmt->bind_param('i', $var);
  7. // etc

Etiquetas: 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 20:51.