繁体   English   中英

无法使用Mac的XAMPP添加到mySQL数据库

[英]Cannot add to mySQL database using XAMPP for mac

我好,我目前正在尝试将数据添加到我的用户登录数据库中,但是由于某种原因,我注册新用户时数据库没有更新。

这是我来自user.inc.php的代码:

<?php
//checks if username already exists in database
function user_exists($user)
{
    $user = mysqli_real_escape_string($user);
    $total = mysqli_query("SELECT user_id FROM user_system WHERE user_name= ('$user')");

    return (mysql_result($total, 0) == '1') ? true : false;
}

//checks if username and password combo is valid
function valid_credent($user, $pass)
{
    $user = mysqli_real_escape_string($user);
    $pass = sha1($pass);
    $total = mysqli_query("SELECT COUNT user_id FROM users 
                        WHERE user_name = '$user' AND 
                        user_password = '$pass' ");

    return(mysql_result($total, 0) == '1') ? true : false;
}

//add user to database
function add_user($user, $pass)
{
    $user = mysqli_real_escape_string(htmlentities($user));
    $pass = sha1($pass);

    $queryStr = "INSERT INTO users (user_name, user_password) VALUES ('$user', '$pass')";
    $R = mysqli_query($mysqli,$queryStr);
}
?>

当我尝试添加视图错误时,我的注册页面上也有警告

Warning: mysql_result() expects parameter 1 to be resource, boolean given in /Applications/XAMPP/xamppfiles/htdocs/PostalCloud/core/user.inc.php on line 8

第8行:

return (mysql_result($total, 0) == '1') ? true : false;

我试过使用“ sanitize()”,但是不存在。

更新:修改代码后仍然出现错误。 这是我的register.php代码的一部分,还有一个使用mysqli连接数据库的init.inc.php。

<?php
include('init.inc.php');

$errors = array();

if(isset($_POST['username'], $_POST['password'], $_POST['repeatPassword']))
{
    if(empty($_POST['username']))
    {
        $errors[] = 'The username cannot by empty. ';
    }

    if(empty($_POST['password']) || empty($_POST['repeatPassword']))
    {
        $errors[] = 'The password cannot by empty. ';
    }

    if($_POST['password'] !== $_POST['repeatPassword'])
    {
        $errors[] = 'Password verification failed. ';
    }

    if(user_exists($_POST['username']))
    {
        $errors[] = 'The username you entered is already taken. ';
    }

    if(empty($errors))
    {
        add_user($_POST['username'], $_POST['password']);

        $_SESSION['username'] = htmlentities($_POST['username']);

        header('Location: protected.php');
        die();
    }
}
?>

init.inc.php:

<?php
session_start();

$exceptions = array('register', 'login');

$page = substr(end(explode('/',$_SERVER['SCRIPT_NAME'])), 0, -4);

if(in_array($page, $exceptions) === false)
{
    if(isset($_SESSION['username']) === false)
    {
        header('Location: login.php');
        die();
    }
}

$mysqli = mysqli_connect('localhost','root','', 'user_system');

$path = dirname(__FILE__);

include("{$path}/core/user.inc.php");
?>

问题是mysql_query()返回的是布尔值而不是结果资源。 发生这种情况有两个原因:

  1. 您执行了返回成功/失败而不是结果集的查询(例如UPDATE)

  2. 您的查询失败

您的查询在列名上包含单引号..应将其删除:

$total = mysqli_query("SELECT user_id FROM user_system WHERE user_name= '$user'");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM