2014-10-12 118 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说