2016-10-01 56 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

相關問題