2016-10-01 57 views
0

我很新的PHP所以请大家多多包涵。我有一个注册表单,并提交输入在该表单上的值,并将它们插入到MySQL数据库表中,但出现以下错误:的MySQL - PHP - 访问被拒绝的用户“” @“localhost”的数据库“MyProject的”

ErrorAccess denied for user''@ localhost'to数据库“MyProject的”

我已经授予所有的访问是可能的,我使用我的代码的用户,但我仍然有此错误。任何帮助表示赞赏和点将被授予!

这里是我的HTML表单:

<!DOCTYPE html> 
<html> 

<head> 

<link rel="stylesheet" type="text/css" href="stylesheet.css"> 

<title>Registration Page</title> 

<script> 
function validateForm() { 
    var x = document.forms["myForm"]["netID"].value; 
    if (x == null || x == "") { 
    alert("NetID must be filled out"); 
    return false; 
    } 

    var y = document.forms["myForm"]["email"].value; 
    if (y == null || y == "") { 
    alert("Email must be filled out"); 
    return false; 
    } 

    var n = document.forms["myForm"]["fname"].value; 
    if (n == null || n == "") { 
    alert("First Name cannot be blank"); 
    return false; 
    } else if (n.length < 2) { 
     alert("First name cannot be less than 2 characters!"); 
     return false; 
    } 

    var b = document.forms["myForm"]["lname"].value; 
    if (b == null || b == "") { 
    alert("Last Name cannot be blank"); 
    return false; 
    } else if (b.length < 2) { 
     alert("Last Name cannot b less than 2 characters!"); 
     return false; 

    } 

} 

</script> 



</head> 
<body> 

<ul> 
    <br> 
    <br> 
    <br> 
    <br> 

    <center><img src="KSUlogo.PNG" alt="logo" style="width:100px;height:50px;"></center> 
    <br> 
    <br> 
    <br> 
    <br> 
    <br> 
    <li><a class="active" href="#home">Home</a></li> 
    <br> 
    <br> 
    <br> 
    <br> 
    <li><a href="#news">News</a></li> 
    <br> 
    <br> 
    <br> 
    <br> 
    <li><a href="#contact">Contact</a></li> 
    <br> 
    <br> 
    <br> 
    <br> 
    <li><a href="#about">About</a></li> 
    <br> 
    <br> 
    <br> 
    <br> 
</ul> 


<h1 style="text-align:center;">CCSE Community Profile Page</h1> 

<br> 
<br> 
<br> 
<br> 
<br> 


<h2 style="text-align:center;">Enter your Registration Information</h2> 

<div style="text-align:center"> 

<form name="myForm" action="RegistrationValues.php" 
onsubmit="return validateForm()" method="post"> 

<center>NetID: <input type="text" name="netID"></center> 
<br> 
<center>Email: <input type="text" name="email"></center> 
<br> 
<center>First Name: <input type="text" name="fname"></center> 
<br> 
<center>Last Name: <input type="text" name="lname"></center> 
<br> 
<br> 
Services You Can Provide the CSE Community</center><br> 
<br> 
<input type="checkbox" name="radio" value="Java"> Java Tutoring<br> 
<input type="checkbox" name="radio" value="Computer" checked> Computer Fixing<br> 
<input type="checkbox" name="radio" value="PHP" checked> PHP Tutoring<br> 
<br><br> 
<select name="availabilty"> 
    <option value="blank"></option> 
    <option value="Java">Morning</option> 
    <option value="Computer">Evening</option> 
    <option value="Service">Afternoon</option> 
</select> 
<br><br> 

<center><input type="submit" value="Submit"></center> 
</form> 

</div> 


</body> 
</html> 

这是我的PHP形式:

<!DOCTYPE html> 
<html> 

<head> 

<link rel="stylesheet" type="text/css" href="stylesheet.css"> 

<title>Registration Page</title> 

</head> 

<body> 

<?php include "header.html";?> 
<?php include "navigation.html";?> 

<div style="text-align:center"> 

<p>netID: <?php echo $_POST["netID"]?></p> 

<p>Email: <?php echo $_POST["email"]?></p> 

<p>First Name <?php echo $_POST["fname"]?></p> 

<p>Last Name: <?php echo $_POST["lname"]?></p> 

<?php 

$netID = $email = $fname = $lname = ""; 

if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    $netID = test_input($_POST["netID"]); 
    $email = test_input($_POST["email"]); 
    $fname = test_input($_POST["fname"]); 
    $lname = test_input($_POST["lname"]); 
} 

function test_input($data) { 
    $data = trim($data); 
    $data = stripslashes($data); 
    $data = htmlspecialchars($data); 
    return $data; 
} 

$servername = "localhost"; 
$username = "myUser"; 
$password = "newpassword"; 
$dbname = "myproject"; 

// Create connection 
$conn = mysqli_connect($servername, $username, $password, $dbname); 
mysql_select_db("$dbname") or die('Error'. mysql_error()); 
// Check connection 
if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 
mysql_query("insert into ProfileInformation (netID, email, fname, lname, radio, availabilty) 
values 
    ('$_POST[netID]','$_POST[email]','$_POST[fname]','$_POST[lname]','$_POST[radio]','$_POST[availabilty]')") 
or die(mysql_error()); 
echo "Done!!!!"; 


$stmt->close(); 
$conn->close(); 
?> 


</body> 
</html> 

这似乎是某处读“”作为用户名,但我不知道,但。 在此先感谢。非常感谢。

+1

混合'mysql'和'的mysqli '是问题 – RamRaider

+0

谢谢。你如何解决这个问题的建议是什么? – rls1982

回答

1

您需要选择一个api并使用它,而不是混合n匹配 - 但是,使用预准备语句而不是直接在sql中嵌入$_POST变量会更好。顺便提一句,$ _POST内的名字需要被引用,除非它们以常量存在!

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 

if (!$conn) { 
    die("Connection failed: " . mysqli_connect_error()); 
} 

$conn->query("insert into ProfileInformation (netID, email, fname, lname, radio, availabilty) 
       values 
      ('{$_POST['netID']}', '{$_POST['email']}', '{$_POST['fname']}', '{$_POST['lname']}', '{$_POST['radio']}', '{$_POST['availabilty']}')") or die(mysql_error()); 

      echo "Done!!!!"; 

$conn->close(); 

现在,你有排序的连接问题(顺便说一句 - 那是什么?这个问题你也许应该分享它是失败的未来读者的原因)您最初提交的SQL是容易受到SQL注射。首选的方法是使用一个prepared statement类似如下:

if(isset($_POST['netID'], $_POST['email'], $_POST['fname'], $_POST['lname'], $_POST['radio'], $_POST['availabilty'])) { 


    $host = 'localhost'; 
    $uname = 'xxx'; 
    $pwd = 'xxx'; 
    $db  = 'xxx'; 

    $conn = new mysqli($host, $uname, $pwd, $db); 

    if (!$conn) { 
     die("Connection failed: " . mysqli_connect_error()); 
    } 


    $sql='insert into `ProfileInformation` (`netID`, `email`, `fname`, `lname`, `radio`, `availabilty`) values (?,?,?,?,?,?);'; 
    $stmt=$conn->prepare($sql); 

    if($stmt){ 

     $netid=$_POST['netID']; 
     $email=$_POST['email']; 
     $fname=$_POST['fname']; 
     $lname=$_POST['lname']; 
     $radio=$_POST['radio']; 
     $avail=$_POST['availabilty']; 

     /* 
      use i for integers 
      use s for strings 
     */ 
     $stmt->bind_params('isssss', $netid,$email,$fname,$lname,$radio,$avail); 
     $result=$stmt? 'Success!' : 'Fail!'; 

     $stmt->close(); 
     $conn->close(); 

    } else { 
     echo 'Error creating statement'; 
    } 
} else { 
    echo 'One or more required POST variables are not set'; 
} 
+0

谢谢,但我得到了同样的错误: ErrorAccess拒绝用户“” @“localhost”的数据库“MyProject的” – rls1982

+0

作为建议的@Pradyut甘露〜检查你的数据库连接细节 - 特别是用户,并确认用户存在在数据库中作为有效用户 – RamRaider

+0

我做了,并且用户确实存在作为数据库中的有效用户。 – rls1982

1

检查你的phpmyadmin。你用我认为这是不exists.go phpmyadmin->用户帐户和check.you可以尝试做到这一点的用户MYUSER和密码新密码: -

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "myproject"; 
+0

我得到 警告:mysqli_connect():(HY000/1045):在第51行的C:\ xampp \ htdocs \ IndividualProject \ RegistrationValues.php中对用户'root'@'localhost'(使用密码:NO)拒绝访问 ErrorAccess拒绝用户“” @“localhost”的数据库“MyProject的” – rls1982

+0

然后检查你的phpmyadmin - > useraccounts用户列表。 –

+0

我做到了。我已经能够使用其他用户将数据插入到数据库中,但现在我收到了这个错误。请帮助,谢谢 – rls1982

相关问题