无法将变量写入SQL数据库

时间:2014-10-12 07:04:14

标签: php mysql mysqli

我尝试制作一个简单的PHP系统,该系统获取用户的登录名,收件人姓名和邮件内容,并将其写入SQL数据库。即使在我发送消息并且页面刷新之后,我也没有任何错误。但是我的SQL数据库中没有新条目出现(通过phpMyAdmin检查)。顺便说一句,所有这些代码都在同一页面上。

从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';
}
}

最后,我调用函数,传递数据库连接变量:

message($link, $sqlaction);

但就像我说的那样,数据库中没有任何内容。我花了4天时间试图调试这个并且即将放弃。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您必须使用引号来插入"$email"之类的字符串,而不仅仅是$email。您还必须使用反引号转义表名,即this-&gt; `你的SQL查询将是: -

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

请注意,对于数字(整数,双精度值,小数等),引号是可选的。如果有帮助,请告诉您accept an answer

答案 1 :(得分:0)

你没有

$email and $username

在此代码中定义。 如果您启用了错误修复

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说的话