2012-08-06 34 views
1

我在我的網站上有一個INSERT操作,它的工作方式如下。MySql數據庫INSERT操作在硬盤(本地主機)上工作,但在互聯網上託管時無效

  1. 在按下按鈕的index.html文件中調用javascript函數。
  2. 在JavaScript函數中,AJAX用於將請求發送到具有必要參數的php文件
  3. php文件訪問數據庫插入數據。

這裏供參考的是上述任務的代碼。

2.Javascript功能

function grandFinale() 
{ 
     if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
    xmlhttp=new XMLHttpRequest(); 
    } 
else 
    {// code for IE6, IE5 
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    //document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","insert.php?q=&name=" + encodeURIComponent(document.getElementById('name').value) + "&txtScore1=" + encodeURIComponent(document.getElementById('txtScore1').innerHTML),true); 
xmlhttp.send(); 
document.location.reload(); 

} 

1.HTML按鈕

<p id="txtScore1" align="center" style="color: #cc6699; font-size: 18px; "></p> 
<label class="control-label" for="input01">Name</label> 
<a href="#" class="btn btn-primary" onclick="javascript:grandFinale()" >Submit My Score</a> 

3.PHP腳本

<?php 
    $con = mysql_connect("host","uname","pword"); 
    if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 

    mysql_select_db("dbname", $con) or die("Unable to select database"); 

    $sql="INSERT INTO 'masterTable' ('Name', 'Score') VALUES ('{$_GET['name']}','{$_GET['txtScore1']}')"; 

    if (!mysql_query($sql,$con)) 
     { 
     die('Error: ' . mysql_error()); 
     } 
    echo "1 record added"; 

    mysql_close($con); 
    ?> 

事情做工精細,當我在硬盤上,但在我的主機本地嘗試它在000webhost.com上的INSERT不起作用。你能提出我出錯的地方嗎?

+0

你得到的錯誤是?此外,大的SQL注入缺陷。消除用戶輸入! – Hamish 2012-08-06 02:12:39

+1

確保爲主機正確配置了用於數據庫訪問的參數。另外請注意,不應該將mysql_ *函數用於新應用程序,因爲它們已被棄用,並且請注意,您的應用程序完全容易受到SQL注入的攻擊,您應該使用PDO參數化查詢來防止這種情況。 – Lusitanian 2012-08-06 02:13:07

+0

您有權在服務器數據庫中插入數據。請檢查一次? – 2012-08-06 02:14:45

回答

1

我將首先檢查您在000webhost.com上爲數據庫(uname)設置的用戶是否具有INSERT權限。

+0

它應該是一個權限問題。當我將*。*上的SQL授權使用命令發佈到'uname'@mysql6.000webhost.com'''由'password'標識時;我收到以下錯誤。 「#1045 - 訪問拒絕用戶'uname'@'localhost'(使用密碼:YES)」 – 2012-08-06 04:07:51

+0

如果我是你,我會在Privileges標籤下添加一個新用戶(你的主機是否有PHPMyAdmin?)然後選擇'授予數據庫「dbname」或全局權限下的所有權限,請務必至少選中「INSERT」框以驗證新用戶是否具有插入權限。 – ews2001 2012-08-06 05:16:25

+0

它沒有特權標籤。當我谷歌爲什麼說它被默認禁用。他們建議以root身份登錄到phpmyadmin。我不能這樣做,它會給出錯誤#1045。感謝您的回答。 – 2012-08-06 07:19:55

相關問題