2014-10-12 114 views
0

我試圖製作一個簡單的PHP系統,它接受用戶的登錄名,收件人名稱和消息內容並將其寫入SQL數據庫。即使在我發送消息並刷新頁面之後,我仍然沒有任何錯誤。但是沒有新的條目出現在我的SQL數據庫中(通過phpMyAdmin檢查)。順便說一下,所有這些代碼都在同一頁上。無法將變量寫入SQL數據庫

開始與一個HTML形式來收集數據:

<form name="login" action="" method="POST"> 
<p>Recipient: <input type="text" name="recipient"/></p> 
<p>Message: <input type="text" name="contents"/></p> 
<input type="Submit" Name="submit" value="Send"/> 
</form> 

然後我設置連接到SQL數據庫:

<?php 
$link = mysqli_connect('host','username','password','database'); 
$sqlaction = 'INSERT INTO $userinbox (Sender, Message) VALUES ($email, $username)'; 
?> 

然後進入該信息到數據庫中的功能:

<?php 

session_start(); 

function message($link, $sqlaction) 
{ 
$sender = $_SESSION['name']; 
$recipient = strtolower($_POST['recipient']); 
$contents = $_POST['contents']; 

switch ($recipient) { 
    case 'person1': 
     $userinbox = 'person1'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    case 'person2': 
     $userinbox = 'person2'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    case 'person3': 
     $userinbox = 'person3'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    case 'person4': 
     $userinbox = 'person4'; 
     $result = mysqli_query($link, $sqlaction); 
     echo 'Message sent.'; 
     break; 
    default: 
     echo 'Current valid users are list of users'; 
} 
} 

最後,我調用函數,傳遞數據庫連接變量Bles:

message($link, $sqlaction); 

但就像我說的,數據庫中沒有任何內容出現。我已經花了4天的時間來嘗試調試,並且處於放棄的邊緣。任何幫助將不勝感激。

+0

尖端的東西:你並不需要一個單獨的表中的每個用戶的收件箱。只需創建一個名爲收件箱的表格並添加字段user_id,owner_id或類似字段。然後,您可以使用存儲在同一個表中的所有內容獲取特定用戶收件箱的內容。原因是如果你得到10.000(100個真正的)用戶,你的分貝看起來就像現在一樣亂七八糟。 – JimL 2014-10-12 08:00:13

回答

1

您必須使用引號來插入像"$email"這樣的字符串,而不僅僅是$email。您還必須逃脫與反引號即這個 - >表名'您的SQL查詢將因此是: -

$sqlaction = "INSERT INTO `$userinbox` (Sender, Message) VALUES ('$email','$username')"; 

注意,對於數字(整數,雙精度值,小數等)的報價是可選的。如果它可以幫助你,請參閱accept an answer

+0

我不知道我必須使用反引號,謝謝。不過,我仍然沒有收到任何輸入到我的數據庫。我會玩弄它,看看我能不能把它工作。謝謝你的幫助。 – user4106283 2014-10-12 08:53:32

+0

你有什麼錯誤? – khandelwaldeval 2014-10-12 09:01:45

+0

沒有錯誤。試過'error_reporing(E_ALL);'如下所述,但這只是給我一個未定義函數的語法錯誤。 當我嘗試提交消息時,現在我的數據庫中出現空白條目,但是如果我嘗試提交多條消息,我仍然只會得到一個空白條目。 Ill鏈接到我的完整代碼: http://pastebin.com/a2VAx0Uc – user4106283 2014-10-12 10:23:29

0

你不必

$email and $username 

在此代碼中定義。 如果啓用了錯誤reporing

error_reporing(E_ALL); 

,您將收到類似

Notice: undefined variable $email on line xxx in file.php 
Notice: undefined variable $username on line xxx in file.php 

而且@devaldcool說