Foros del Web » Programando para Internet » PHP »

Problema con llamada a query

Estas en el tema de Problema con llamada a query en el foro de PHP en Foros del Web. Muy buenas, despues de mucho tiempo he decidido meterme en el mundo de la programación PHP estoy tratando de crear un script para registro de ...
  #1 (permalink)  
Antiguo 25/11/2007, 09:57
 
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 16 años, 4 meses
Puntos: 0
Problema con llamada a query

Muy buenas, despues de mucho tiempo he decidido meterme en el mundo de la programación PHP estoy tratando de crear un script para registro de usuarios, que se supone que es de lo mas sencillo, y me que quedado atascada ya que me devuelve constantemente este error:

Fatal error: Call to a member function query() on a non-object on line 40

He buscado por Internet y se supone que podía ser porque estubiera trabajando con variables locales, asi que como veis en el codigo la pasé a global y sigo igual, ta,ien he revisado la versión PHP y MySQL con la que estoy trabajando y son estas:
PHP: 5.2.3
MySQL: 5.0.41
Apache: 2.0.59
Que, segun he leido no tendrían que darme problemas, pero no encuentro donde esta el error.
Espero me puedan ayudar, aqui les adjunto el codigo completo:

Código PHP:
include ('centro/funcion.php');

$connected entraDB();
if (
$connected == true) {

//Pasos de seguridad y registro con seguridad
// contra mails repetidos o login repetido.

$q2 "SELECT * FROM o_user";
$result mysql_query($q2);
$num mysql_numrows($result);
$namer 0;
$mailer 0;
for (
$i 0$i $num$i++) {
if (
strtolower(mysql_result($result,$i,"nombre")) == strtolower($_POST['nombre'])) {
$namer++;
}
for (
$o 0$o $num$o++){
if (
strtolower(mysql_result($result,$o,"email")) == strtolower($_POST['email'])){
$mailer++;
}
}
}
if (
$namer 1){
    if (
$mailer 1){
    
//Contamos el ID para que no haya 2 iguales.
    //$id = $q2->nextID('nombre');
    // El primer registro sera de clase 3
    // el resto de registros seran clase 1
    
if ($id 1) {
    
$class=1
    }
    else {
    
$class=3;
    }
    
//Insertamos datos en la tabla. 
    
global $q2
    
$q2->query('INSERT INTO o_user (id,nombre,pass,email,class) VALUES (?,?,?,?,?)',
        array(
'',$_POST['nombre'], md5($_POST['pass']), $_POST['email'],$class));     
    
mysql_query($query) or die("This account already exists.");
    
setcookie("va_reg",$_POST['user'],time()+86400);
    echo 
"Register Success";
    }
    else
    {
    echo 
"This e-mail already exists";
    }
}
else
{
echo 
"This username already exists";
}

//Fin del IF pricipal de conexión.
}
else
{
echo 
"Database Could not Connect...";
}
include (
'centro/funcion.php');

$connected entraDB();
if (
$connected == true) {

//Pasos de seguridad y registro con seguridad
// contra mails repetidos o login repetido.

$q2 "SELECT * FROM o_user";
$result mysql_query($q2);
$num mysql_numrows($result);
$namer 0;
$mailer 0;
for (
$i 0$i $num$i++) {
if (
strtolower(mysql_result($result,$i,"nombre")) == strtolower($_POST['nombre'])) {
$namer++;
}
for (
$o 0$o $num$o++){
if (
strtolower(mysql_result($result,$o,"email")) == strtolower($_POST['email'])){
$mailer++;
}
}
}
if (
$namer 1){
    if (
$mailer 1){
    
// El primer registro sera de clase 3
    // el resto de registros seran clase 1
    
if ($id 1) {
    
$class=1
    }
    else {
    
$class=3;
    }
    
//Insertamos datos en la tabla. 
    
global $q2
    
$q2->query('INSERT INTO o_user (id,nombre,pass,email,class) VALUES (?,?,?,?,?)',
        array(
'',$_POST['nombre'], md5($_POST['pass']), $_POST['email'],$class));     
    
mysql_query($query) or die("This account already exists.");
    
setcookie("va_reg",$_POST['user'],time()+86400);
    echo 
"Register Success";
    }
    else
    {
    echo 
"This e-mail already exists";
    }
}
else
{
echo 
"This username already exists";
}

//Fin del IF pricipal de conexión.
}
else
{
echo 
"Database Could not Connect...";

¿Puede ser que no este tratando bien el tema del id? en la bd esta como int 15 con autoincrement por eso dejo el dato en blanco ya que se supone que lo rellena la DB solo ¿no?

Última edición por yerenna; 25/11/2007 a las 09:59 Razón: Me deje una pregunta pendiente
  #2 (permalink)  
Antiguo 25/11/2007, 12:49
 
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con llamada a query

¿Nadie puede hecarme una mano? O esque falta algo de codigo de alguna referencia, un poco de ayuda por favor que seguro que aqui hay gente que me puede decir como solicionar el error.
Gracias por adelantado.
  #3 (permalink)  
Antiguo 25/11/2007, 13:22
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
Re: Problema con llamada a query

Tu problema es que estas usando un objeto ($q2), sin embargo en tu código, no indicas donde lo creas, mas bien asignas como si fuera una cadena de texto (string), por lo que te va a fallar, no se que tipo de clase utilices para las llamadas a la base de datos, pero tienes que instanciar previamente el objeto (usando el operador new) antes de poder llamar a sus métodos.

Saludos.
  #4 (permalink)  
Antiguo 25/11/2007, 13:36
 
Fecha de Ingreso: noviembre-2007
Mensajes: 3
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Problema con llamada a query

M.. estoy empezando con esto ¿podrías ponerme un ejemplo? yo hago las llamadas a la BD mediante el funcionDB de este modo:
Código PHP:
function entraDB() {
include_once(
'conexion.php');

$sql mysql_connect ($dbhost$dbuser$dbpass);
if (!
$sql) {

unset(
$dbpass);
return 
false;

}
else {

mysql_select_db ($dbname);
unset(
$dbpass);
return 
true;

}

Y en el conexion.php lo unico que hay son esos datos definidos. ¿Que es lo que me indicas que estoy llamando mal?
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 04:16.