Php 无法使用XAMPP for mac添加到mySQL数据库
我你好,我目前正在尝试向我的用户登录数据库添加数据,但由于某些原因,我的数据库在注册新用户时未更新 以下是我在user.inc.php中的代码: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
<?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'");