所以在这里我试图用一些简单的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
}
?>
答案 0 :(得分:0)
我认为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>
答案 1 :(得分:0)
替换
mysql_query("INSERT INTO message (name , email) VALUES ('$name' , '$email'");
使用
mysql_query("INSERT INTO message (name , email) VALUES ('$name' , '$email')");