我试图定义一个用户注册类,这是功能我对现在这个查询有什么问题?
<?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():提供的参数不是在/home/piscolab/public_html/keepyourlinks.com/Recetas/registro.php一个有效的MySQL结果资源上线52 萨尔瓦多Usuario托尼瑟Registro Correctamente
- $ this-> nombre有一个非空值(选中)
- 数据库为空,所以应该没有结果。
- 问题是脚本继续并假装用户已经注册,甚至显示名称!并没有更新数据库..
我只是不能看到问题..你能吗?
谢谢!
你能从registro.php发布第52行吗?我在这里看不到mysql_fetch_array。实际上,在第51行,你执行查询。显示确切的查询。此外,您可以尝试在mysql_query()函数(如果使用它)后面添加“或die(mysql_error())”以查看查询是否有错误(例如表名错误)。 – Tjirp 2010-12-16 17:44:39
哇,您应该意识到,您对[SQL Injection](http://en.wikipedia.org/wiki/SQL_injection)攻击广泛开放,对吧?要么逃避您的输入(通过'mysql_real_escape_string')或使用参数化查询(更好的选择)... – ircmaxell 2010-12-16 17:52:20
MySQL只会说英语。 cheap_humor> – mattbasta 2010-12-16 20:00:38