2014-06-26 51 views
0

嗨我想創建一個小的電子郵件訂閱者腳本來添加電子郵件地址到我的數據庫。我能夠使用不推薦使用的函數(如mysql_connect)正常工作,但是使用mysqli代替它會更好。但由於某種原因,我不能再將電子郵件地址插入到數據庫中,但我可以連接到數據庫,並檢查電子郵件地址是否已經存在。我想知道爲什麼我的INSERT似乎沒有工作。我沒有太多的PHP經驗,謝謝。php mysql連接到數據庫,但不能插入

if (!$link) { 
    echo "save_failed cannot connect"; //if cant connect show error 
    return; 
    } 
    mysqli_select_db($link,$mydb); 

// Clean variables before performing insert 
$clean_email = mysqli_real_escape_string($link,$_POST['email']); 
$clean_subscriber = mysqli_real_escape_string($link,$_POST['firstname']); 
$clean_date = mysqli_real_escape_string($link,$_POST['date']); 

$query = "SELECT * FROM EmailList WHERE email = '{$email}'";//check if already in list 
$result = mysqli_query($link,$query); 
$row_cnt = mysqli_num_rows($result); 


if($row_cnt == 0) { 
// Perform insert if not in list 
$sql = "INSERT INTO EmailList (Email,Name,Date) VALUES 
('$clean_email','$clean_subscriber','$clean_date')"; 
    echo "Thank you for Subscribing to my blog!"; 
} else { 
    echo "You have subscribed already. Thank you for subscribing"; 
} 
+4

你不是在查詢'$ sql' var ..就像你對select所做的那樣做一個'mysqli_query'。 –

+0

'date'也是一個保留關鍵字,它以ticks(') –

+1

爲單位,應該沒有任何理由事先查詢數據庫以查看電子郵件是否已經存在。只需在電子郵件字段中創建唯一索引並直接轉到插入,在存在重複插入嘗試的情況下處理錯誤。每次運行腳本時,這會爲您節省一次針對數據庫的查詢。您還應該始終檢查數據庫交互中的錯誤 - 連接時,查詢時等。處理這些錯誤情況的代碼將變得非常簡單,而且更容易調試。 –

回答

2

你好像缺少運行查詢行:

mysqli_query($link,$sql); 
+0

感謝您的評論。我認爲這會修復它,但由於某些原因,它仍然沒有插入到數據庫中。 – user2002077

+0

嘗試'mysqli_query($ link,$ sql)或reportMySQLiError($ mysqli);'並查看出現了什麼錯誤。 – wogsland

2

您需要

mysqli_query()

等執行查詢所以:

if (!$link) { 
    echo "save_failed cannot connect"; //if cant connect show error 
    return; 
    } 
    mysqli_select_db($link,$mydb); 

// Clean variables before performing insert 
$clean_email = mysqli_real_escape_string($link,$_POST['email']); 
$clean_subscriber = mysqli_real_escape_string($link,$_POST['firstname']); 
$clean_date = mysqli_real_escape_string($link,$_POST['date']); 

$query = "SELECT * FROM EmailList WHERE email = '{$email}'";//check if already in list 
$result = mysqli_query($link,$query); 
$row_cnt = mysqli_num_rows($result); 


if($row_cnt == 0) { 
// Perform insert if not in list 
$sql = "INSERT INTO EmailList (Email,Name,Date) VALUES 
('$clean_email','$clean_subscriber','$clean_date')"; 
mysqli_query($link,$sql) 
    echo "Thank you for Subscribing to my blog!"; 
} else { 
    echo "You have subscribed already. Thank you for subscribing"; 
} 
+0

謝謝大家認爲我明白我要去哪裏錯了。現在會測試它。 – user2002077

+0

我仍然無法讓它與上述建議一起工作。我正在醃製 – user2002077

+0

您是否收到任何錯誤?嘗試運行這個函數來查看mysqli_error($ link) – GaijinJim