2012-09-22 69 views
0

我已經從YouTube教程(信用:pbj746)下面的代碼。除了提交的數據沒有出現在數據庫中之外,它們似乎都起作用了!我已經檢查過$ dbhost,$ db,$ dbuser和$ dbpassword,它們都匹配,但數據沒有被拉入。時事通訊表格錄入數據庫

如果有人能幫上忙,那會很棒!

<?php 
    $dbServer = "localhost"; 
    $db = "quizsoft_newsletter"; 
    $dbUser = "admin_newsletter"; 
    $dbPassword = "password"; 

    $conn = mysql_connect($dbhost,$dbuser,$dbpass); 
    mysql_select_db($db); 

    $email = $_POST['email']; 

    mysql_query("INSERT INTO emails ('ID', 'Email') 
     VALUES(NULL, '$email')") or die(mysql_error()); 
    ?> 



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>Form</title> 

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(e) { 
    $("div#msgbox").hide(); 
    $("#addEmail").click(function() { 
     $.post('process.php', { 
      email:$("#email").val() 
     }, 
     function(response) { 
      $("div#msgbox #msg").html("Email Submitted Successfully!") 
      $("div#msgbox").slideDown("normal"); 
     } 
     ); 
     return false; 
    }); 
    $("div#msgbox").click(function() { 
     $(this).slideUp("normal"); 
    }) 
}); 
</script> 

<style> 
body { font:Verdana, Geneva, sans-serif; font-size:13px; } 
div#msgbox { background:#999; border-bottom:1px solid #CCC; color:#FFF; width:100%; height:30px; top:0; left:0; cursor:pointer; } 
div#msgbix #msg { line-height:30px; padding-left:10px; } 
form#newsletter { margin-top:35px; } 
</style> 

</head> 
<body> 

    <div id="msgbox"><span id="msg"> </span></div> 
    <form id="newsletter"> 
     Email:<input type="text" id="email" /> 
     <input type="submit" id="addEmail" value="Submit" /> 
    </form> 

</body> 
</html> 

謝謝D!

編輯:進一步,我已經運行一個簡單的PHP腳本來確認數據庫連接:http://quizsoft.co.uk/ajaxform/test.php

+0

'mysql_error()'應該告訴你是什麼錯誤。如果沒有錯誤,那麼你試圖將空白變量保存到數據庫中。 – desbest

+0

感謝Debest,沒有與mysql_error()出現錯誤。您能否解釋保存空白變量部分 - 因爲輸入具有值。非常感謝! –

+0

嘗試添加'或死亡(mysql_error());''mysql_connect'和'mysql_select_database'函數調用後,就像您爲'mysql_query'調用一樣。另外,你可以發佈表創建腳本? – Erik

回答

0

再說什麼下列也有一個小語法錯誤。 $dbServer應改名爲$dbhost,反之亦然。

此外,從您的評論我知道你正在使用的ID自動遞增,所以我建議你換這個

INSERT INTO emails ('ID', 'Email') VALUES(NULL, '$email') 

這個

INSERT INTO emails (`Email`) VALUES ('$email') 

因爲ID不能爲空和反引號需要用於封裝列名稱。另外,就像你站起來一樣,你的sql很容易被sql注入,你可能想用pdo來看看(這裏是tutorial)而不是棄用的mysql函數。如果沒有,你應該至少是更換

$email = $_POST['email']; 

通過

$email = mysql_real_escape_string($_POST['email']); 
+0

感謝依賴@Erik。我已經提出了您的建議更改(真的錯過了那些)。但不幸的是,數據仍未被捕獲。我只能想象這是我如何設置數據庫。雖然 - 表格非常簡單(ID - INT然後auto_increment&email - VARCHA - 40)。 –

+0

@ D.Horton ...看我的編輯:)另外,SQL插入和表單的HTML是在單獨的文件中的權利? – Erik

+0

仍然沒有運氣@Erik,一定是我做錯了。這裏是我的文件和數據庫 - 如果你能看到問題,關閉未來訪問者的線程會很好:https://dl.dropbox.com/u/15052360/ajaxform.zip再次感謝! –