这个查询出了什么问题?

时间:2010-12-16 17:41:23

标签: php user-registration

我正在尝试定义用户注册类,这是我现在拥有的功能

 <?php

///// SE SUPONE QUE AQUI EL USUARIO YA HA INTRODUCIDO SUS DATOS DE REGISTRO


/* Conectando la Base de Datos */
include("includes/basedatos.php");

require_once("includes/funciones.php");

class registro_usuarios
{

    var $pass;
    var $email;
    var $nombre;

     public function tratandovariables()
    {

        /* Eliminando Caracteres Especiales */
        $password = htmlspecialchars($_POST['pass']);
        $mail = htmlspecialchars(strip_tags($_POST['mail']));
        $nombre = htmlspecialchars(strip_tags($_POST['nombre']));

        if (preg_match("/^[a-zA-Z0-9\-_]{3,20}$/", $nombre))
        {
            /* Asignando Valor */
            $this->pass = md5($password);
            $this->email = $mail;
            $this->nombre = $nombre;
        }
        else
        {
            echo "El nombre de usuario no es válido<br>";
            exit;
        }
    }

    public function register()
    {
        $this->tratandovariables();




        /* Comprobando si existe el usuario */
        $check = "SELECT * FROM usuarios WHERE alias = '$this->nombre'";
        $qry = mysql_query($check);

        /* La compracion */
            if (mysql_num_rows($qry))
            {
                echo "Lo sentimos, el nombre de usuario ya esta registrado.<br />";
                mysql_free_result($qry);
                return false;
            } else
            {





                $insert = "INSERT INTO usuarios (alias, pass, email, fid, fechar, ultima, img_src, reputacion) VALUES ('".$this->nombre."','".$this->pass."','".$this->email."','-1', 'NOW()', 'NOW()',' ', '0' )";
                $qry = mysql_query($insert);
                    if(mysql_affected_rows())
                    {
                        echo "El Usuario $this->nombre se Registro Correctamente";
                        return true;
                    }
                    else
                    {
                        echo "Error Ingresando datos";
                        return false;
                    }
                return false;
            }
    }

}
?>

问题是我总是给出了这个错误(通过没有怪异字符的表单输入一个简单的varchar):

警告:mysql_fetch_array():提供的参数不是第52行/home/piscolab/public_html/keepyourlinks.com/Recetas/registro.php中的有效MySQL结果资源 El Usuario toni se Registro Correctamente

  • $ this-&gt; nombre具有非空值(已选中)
  • 数据库为空,所以应该永远不会有结果。
  • 问题是剧本继续并假装用户已经注册,甚至显示名称!数据库没有更新..

我只是看不出问题..你呢?

谢谢你!

5 个答案:

答案 0 :(得分:1)

从'now()'周围删除引号,否则你插入的是字符串而不是MySQL时间戳

答案 1 :(得分:0)

在这里使用连接:

/* Comprobando si existe el usuario */
    $check = "SELECT * FROM usuarios WHERE alias = '".$this->nombre."'";

答案 2 :(得分:0)

PHP manual says

  

资源mysql_query(字符串$ query   [,resource $ link_identifier])   mysql_query()发送一个唯一的查询   (不支持多个查询)   到当前活动的数据库   与之关联的服务器   指定link_identifier。

如果您没有“当前活动的数据库”,那么您的mysql_ *调用将失败。最好的做法是在调用时提供MySQL连接链接标识符。

你在哪里调用mysql_connect?

答案 3 :(得分:0)

好的,非常感谢你帮助我,

似乎有一个不同的错误(有一个属性名称,tipical ......)但仍然值得,因为发现了这些错误..

如果有人需要它,那么类代码:(适应你的属性)

class registro_usuarios
{

    var $pass;
    var $email;
    var $nombre;

     public function tratandovariables()
    {

        /* Eliminando Caracteres Especiales */
        $password = htmlspecialchars($_POST['pass']);
        $mail = htmlspecialchars(strip_tags($_POST['mail']));
        $nombre = htmlspecialchars(strip_tags($_POST['nombre']));

        if (preg_match("/^[a-zA-Z0-9\-_]{3,20}$/", $nombre))
        {
            /* Asignando Valor */
            $this->pass = md5($password);
            $this->email = $mail;
            $this->nombre = $nombre;
        }
        else
        {
            echo "El nombre de usuario no es válido<br>";
            exit;
        }
    }

    public function register()
    {
        $this->tratandovariables();




        /* Comprobando si existe el usuario */
        $check = "SELECT * FROM usuarios WHERE alias = '".$this->nombre."'";
        $qry = mysql_query($check);

        /* La compracion */
            if (mysql_num_rows($qry))
            {
                echo "Lo sentimos, el nombre de usuario ya esta registrado.<br />";
                mysql_free_result($qry);
                return false;
            } else
            {





                $insert = "INSERT INTO usuarios (alias, pass, mail, fid, fechar, ultima, img_src, reputacion) VALUES ('".$this->nombre."','".$this->pass."','".$this->email."','-1', NOW(), NOW(),' ', 0 )";
                $qry = mysql_query($insert);
                    if(mysql_affected_rows())
                    {
                        echo "El Usuario $this->nombre se Registro Correctamente";
                        return true;
                    }
                    else
                    {
                        echo "Error Ingresando datos";
                        return false;
                    }
                return false;
            }
    }

}

再次感谢!

答案 4 :(得分:-1)

试试这个;

$check = "SELECT * FROM usuarios WHERE alias = '".$this->nombre."'";

我的代码中没有看到任何mysql_fetch_array()语句。