Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用XAMPP for mac添加到mySQL数据库_Php_Mysql_Macos_Xampp - Fatal编程技术网

Php 无法使用XAMPP for mac添加到mySQL数据库

Php 无法使用XAMPP for mac添加到mySQL数据库,php,mysql,macos,xampp,Php,Mysql,Macos,Xampp,我你好,我目前正在尝试向我的用户登录数据库添加数据,但由于某些原因,我的数据库在注册新用户时未更新 以下是我在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 FR

我你好,我目前正在尝试向我的用户登录数据库添加数据,但由于某些原因,我的数据库在注册新用户时未更新

以下是我在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);
}
?>
第8行:

return (mysql_result($total, 0) == '1') ? true : false;
我尝试过使用“sanitize()”,但它并不存在

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

<?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\u query()返回的是布尔值,而不是结果资源。出现这种情况的原因有两个:

  • 您执行了返回成功/失败而不是结果的查询 设置(例如更新)

  • 您的查询失败

  • 您的查询在列名上包含单引号。应删除此项:

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

    不要使用mysql_*函数。这些都已弃用,不支持MySQL.com的新功能。你似乎在那里来回切换,这很奇怪。此外,切换到mysqli prepared语句将避免必须转义每个变量。我建议用更安全、更高效的连接重新开始这个脚本。我这样做了,结果出现了更多错误:警告:mysqli_query()需要至少2个参数,1个在第6行的/Applications/XAMPP/xamppfiles/htdocs/PostalCloud/core/user.inc.php中给出警告:mysql_result()需要参数1作为资源,第8mysqli行的/Applications/XAMPP/xamppfiles/htdocs/PostalCloud/core/user.inc.php中给出的null查询也需要引用数据库连接。选中此项:
    $total = mysqli_query("SELECT user_id FROM user_system WHERE user_name= '$user'");