输入没有添加到我的mysql服务器


Input not being added to my mysql server?

所以在这里我试图用一些简单的php创建一个日志。

问题是,我创建的数据库中没有添加任何内容。每当我检查数据库时,在留言簿表单上添加并提交文本后,我总是得到一个空的数据集。

有人能看到我的代码有什么问题吗?

<?php
$sql = mysql_connect("localhost" , "root") or die(mysql_error);
mysql_select_db("guestbook" , $sql);
if($_SERVER['REQUEST_METHOD'] == 'POST') 
{
    $name = mysql_real_escape_string($_POST['name']);
    $email = mysql_real_escape_string($_POST['email']);
    $query = mysql_query("INSERT INTO message (name , email) VALUES ('$name' ,      '$email')");
    echo ("Message succesfully added.");
}
?>
<html>
    <head>
        <title>Guestbook</title>
    </head>
    <form action="index.php" method="post">
        Name: <input type="text" name="name"/><br>
        Email: <input type="text" name="email"/><br>
        <input type="submit" value="Post!"/>
    </form>
</html>
<?php
$result = mysql_query("SELECT * FROM message ORDER BY id DESC");
while($row = mysql_fetch_array($result))    
{
?>
<table>
    <tr>
        <td>Name:</td>
        <td><?php echo $row['name'] ?></td>
    </tr>
    <tr>
        <td>Message:</td>
        <td><?php echo $row['email'] ?></td>
    </tr>
</table>
<?php
}
?>

更换

mysql_query("INSERT INTO message (name , email) VALUES ('$name' , '$email'");

mysql_query("INSERT INTO message (name , email) VALUES ('$name' , '$email')");

我认为name是mysql中的一个保留字,不是吗?

你可能需要修改你的插入脚本如下:

$query = mysql_query("INSERT INTO message (`name` , email) VALUES ('$name', '$email')");

话虽如此,您的脚本对注入攻击是完全开放的。在将数据粘贴到SQL语句中之前,您应该使用PDO并验证数据。当您的用户输入bob;drop table users;作为他的名字并且您的查询运行时,您会怎么做?

编辑:还有,你少了一个括号。

编辑2:如果你仍然得到一个错误运行这个,让我们知道你看到了什么:

$sql = "INSERT INTO message (`name` , email) VALUES ('$name', '$email')";
echo $sql;

您很有可能看到其中一个变量为空。

编辑3:

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') 
{
    $name = mysql_real_escape_string($_POST['name']);
    $email = mysql_real_escape_string($_POST['email']);
    if(!empty($name) && !empty($email))
    {
        $query = mysql_query("INSERT INTO message (name , email) VALUES ('$name' ,      '$email')");
        echo ("Message succesfully added.");
    }
    else
    {
        echo "It seems that either name or email was empty, so not inserting data.<br>";
    }
}
?>

编辑4-又名天哪我还注意到,我没有在从你的问题中复制的代码中添加额外的括号。我已经编辑了它,从现在开始包括它。

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST') 
{
    $username = mysql_real_escape_string($_POST['username']);
    $username = mysql_real_escape_string($_POST['useremail']);
    if(!empty($name) && !empty($email))
    {
        $query = mysql_query("INSERT INTO message (name , email) VALUES ('$username', '$useremail')");
        echo ("Message succesfully added.");
    }
    else
    {
        echo "It seems that either name or email was empty, so not inserting data.<br>";
    }
}

<html>
    <head>
    <title>Guestbook</title>
    </head>
    <form action="index.php" method="post">
    Name: <input type="text" name="username"/><br>
    Email: <input type="text" name="useremail"/><br>
    <input type="submit" value="Post!"/>
    </form>

?>
// Make sure you stick this </html> at the BOTTOM of you php file.
</html>