2014-01-15 35 views
0

早上好, 我正在瘋狂嘗試使用mysql的第一個php代碼之一。我已經在兩臺服務器上進行了測試,其中一臺託管在別處,另外還使用了本地wamp服務器,結果相同,因此我必須在創建連接的代碼中或在稍後運行查詢時出現錯誤。警告:mysql_query()[function.mysql-query]:拒絕用戶'@'localhost'的訪問(使用密碼:否)

對於wamp我已經驗證了php.ini和MySQL特權,在代碼中我使用了在那裏陳述的憑據。我希望得到一些指導。

<?php 

// Function: connect to a database. Returns the database connection. 




    function connect_db($host, $id, $pwd) 
    { 

    $connection = @mysql_connect('localhost', 'username', 'password') 
     or die('connection problem:' . mysql_error()); 
    mysql_select_db('database_db'); 
    return $connection; 
    if (!$connection) 
    { 
    print ("internal error " . mysql_errno()); 
    } 
    } 

//get names from form 

$ID = $_POST['ID']; 
$Event= $_POST['Event']; 
$Date = $_POST['Date']; 
$Time = $_POST['Time']; 
$Venue= $_POST['Venue']; 
$TypeID= $_POST['TypeID']; 
$Score= $_POST['Score']; 
$Member = $_POST['Member']; 

//insert values 
$myquery = "INSERT INTO Results(ID, Event, Date, Time, Venue, TypeID, Score, Member)VALUES('$ID', '$Event', '$Date', '$Time', '$Venue', '$TypeID', '$Score', '$Member')"; 
$answer = mysql_query($myquery); 

if (!$answer) { 
    $message = 'Invalid query: ' . mysql_error() . "\n"; 
    $message .= 'Whole query: ' . $myquery; 
    die($message); 
} 

while ($row = mysql_fetch_assoc($answer)) { 
    echo "Your results were entered successfully"; 
    echo "<br>"; 
    echo $row['Id']; 
    echo $row['Event']; 
    echo $row['Date']; 
    echo $row['Time']; 
    echo $row['Venue']; 
    echo $row['TypeID']; 
    echo $row['Score']; 
    echo $row['Member']; 
} 

?>

+1

** **危險:您正在使用[**的**過時的數據庫API(HTTP:// stackoverflow.com/q/12859942/19068),並應使用[現代替換](http://php.net/manual/en/mysqlinfo.api.choosing.php)。你也**易受[SQL注入攻擊](http://bobby-tables.com/)**,現代的API會使[防禦]更容易(http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)自己從。 – Quentin

+0

@Quentin,你能詳細說明一下嗎?如前所述,這是我的第一次編程經驗。在這個階段,我需要修復與數據庫的連接。 API的東西可以稍後排序,我沒有計劃發佈這項工作。 – Joy

+1

評論中有幾條鏈接詳細說明。 – Quentin

回答

1

您需要更改 '用戶名' 和 '密碼',以實際憑據在mysql_connect通話。

除非當然,這些都是您想要的憑據 - 那麼您需要確保用戶確實存在並且有權訪問數據庫。

作爲一個附註,使用mysql_*函數已被棄用,建議使用mysqli_*或準備好的語句。

+1

但是,錯誤消息說沒有使用密碼,也不是密碼錯誤。 – Quentin

+1

@Quentin你是對的 - 看起來已經提供了錯誤的代碼... – Ryan

+0

我已經在實際代碼中完成了這項工作,但我不會將它們粘貼到公共論壇中;) – Joy

0

嘗試給訪問表用戶:

grant all On [tabelName] to [userName]; 

例如

grant all On mysql.* to root; 
相關問題