【问题标题】:Why am I getting all these errors?为什么我会收到所有这些错误?
【发布时间】:2012-08-29 00:19:47
【问题描述】:

对不起,如果这看起来很愚蠢但很简单,但我似乎无法弄清楚为什么会出现这些错误:

警告:mysql_result() 期望参数 1 是资源,布尔值在 C:\Program Files (x86)\EasyPHP-5.3.9\www\Image Upload\func\user.func.php 第 25 行给出

注意:未定义索引:第 37 行 C:\Program Files (x86)\EasyPHP-5.3.9\www\Image Upload\register.php 中的 user_id

这是每个文件的代码

user.func.php:

function user_exists($email){
$email = mysql_real_escape_string($email);
$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = `$email`");
return (mysql_result($query, 0) == 1) ? true : false;
}

这里是 register.php:

if (isset($_POST['register_email'], $_POST['register_name'], $_POST['register_password'])){
$register_email = $_POST['register_email'];
$register_name = $_POST['register_name'];
$register_password = $_POST['register_password'];

$errors = array();

if(empty($register_email) || empty($register_name) || empty($register_password)){
    $errors[] = 'All fields must be filled out';
} 
else{
        if(filter_var($register_email, FILTER_VALIDATE_EMAIL) === false){
            $errors[] = 'Email address not valid';
        }
        if(strlen($register_email) > 255 || strlen($register_name) > 35 || strlen($register_password) > 35){
            $errors[] = 'One or more fields contains too many characters';
        }
        if(user_exists($register_email) === true){
            $errors[] = 'That email has already been registered to another user';
        }
    }

if(!empty($errors)){
    foreach ($errors as $error){
        echo $error, '<br />';
    }
} else {
    $register = user_register($register_email, $register_name, $register_password);
    $SESSION['user_id'] = $register;
    echo $_SESSION['user_id'];
}

}

感谢您的帮助! -TechGuy24

【问题讨论】:

  • 当您发布列出行号的错误消息时,如果您确定这些行号匹配的行,它会有所帮助。在行尾添加一个简单的注释,如“这是第 37 行”就足够了;它省去了人们试图准确定位错误的哪里的麻烦,并让他们找出错误的什么。 :-)
  • 您手动完成所有这些工作有什么原因吗?像CakePHPCodeIgnighter 这样的框架可以自动为你做很多事情。您似乎正在重新发明的是model with basic validations 模式的一个极其特定于应用程序的实现。

标签: php mysql easyphp


【解决方案1】:

查询失败......它应该是email = '$email'(而不是用反引号包围第二封电子邮件)。

还请查看准备好的语句和 PDO。

mysql_query 将在失败时返回 FALSE(布尔值),在成功时返回您正在寻找的“资源”。

【讨论】:

  • 我修复了会话问题..我不敢相信我错过了“_”...愚蠢的错误..我知道我在哪里使用了反引号..我知道比这样做更好。 .我猜这只是习惯..但是现在没有错误,但我输出的数值为0。不应该是1或更高吗?
【解决方案2】:

您在值上使用反引号“`”,因此您的查询失败,请使用单引号 '

$query = mysql_query("SELECT COUNT(`user_id`) FROM `users` WHERE `email` = '$email'");

【讨论】:

  • 没关系,我解决了我的第二个问题!感谢大家的帮助!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-24
  • 2011-11-29
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多