2014-03-19 45 views
1

我想用ajax插入數據到數據庫中。問題是,除了在數據庫中插入數據之外,所有的工作都是有效的。 當我點擊提交按鈕時,我收到了正確的消息「您已被訂閱」只是它不會在數據庫中插入數據。並不明白爲什麼。Ajax沒有插入數據到數據庫

dbconn.php

<?php 
$db = new mysqli($dbhostname, $dbuser, $dbpass, $dbname); 
if ($db->connect_errno) { 
    echo "Failed to connect to MySQL: (" . $db->connect_errno . ") " . $db->connect_error; 
} 
?> 

common-functions.php

<?php 
    require_once('dbconn.php'); 
    function subscribe() { 
    global $db; 
    if(isset($_POST['semail'], $_POST['sname'])) { 
     $name = $_POST['sname']; 
     $email = $_POST['semail']; 
     $db->query("INSERT INTO subscribers (`name`, `email`, 'confirmed') VALUES ('".$db->escape_string($name)."', '".$db->escape_string($email)."', 0)"); 
     echo "You have been subscribed"; 
    } 
    } 
subscribe(); 
?> 

subscribe.php

HTML

<form name="subscribe" class="subscribe"> 
    <label class="lablabel">Name:</label><input type="text" class="subscribe-field" id="sname" name="sname"></br> 
    <label class="lablabel">Email:</label><input type="text" class="subscribe-field" id="semail" name="semail"> 
    <input type="submit" id="ssub" value="Subscribe"> 
    </form> 

AJAX

<script type="text/javascript"> 
$(document).on('submit','.subscribe',function(e) { 
    e.preventDefault(); // add here 
    e.stopPropagation(); // add here 
    $.ajax({ url: 'lib/common-functions.php', 
     data: {action: 'subscribe', 
     sname: $("#sname").val(), 
     semail: $("#semail").val()}, 
    type: 'post', 
    success: function(output) { 
     alert(output); 
    } 
}); 
}); 
</script> 
+2

首先是檢查引號''confirmed'',其次你應該配置和檢查錯誤日誌往往 –

+0

沒錯雖然weired認爲是我試圖將它們從'改變'爲所有,但這並沒有奏效,但反過來工作。 – user3140607

回答

4

刪除引號,並以這裏反引號

$db->query("INSERT INTO subscribers (`name`, `email`, 'confirmed') 
                ^  ^
+0

反引號是否真的有必要? – duper51

+0

是的沒有錯誤,並補充說,這實際上是一個很好的做法..如果你不知道你用mysql保留字命名了一列嗎? –

+1

好點,我想我已經陷入不做這件事的壞習慣,它還沒有發生可怕的事情。 – duper51