所以我有这样的代码,它接受一个消息/帖子用户插入,它意味着将它发布到数据库,然后显示和一个单独的页面。我得到了显示公园工作正常它只是试图插入数据库这是问题
这个代码......
<?php
mysql_connect("localhost", "root", "");
mysql_select_db("test");
$time = time();
mysql_query "INSERT INTO threads (title, message, author, dated);"
VALUES (NULL,'$_POST[title]','$_POST[message]','$_POST[author]','0','$time');
echo "Thread Posted.<br><a href='Untitled9.php'>Return</a>";
?>
不会将信息发布到数据库中!
为什么会这样,以及如何解决?
id int(11) No None AUTO_INCREMENT
title varchar(255) latin1_swedish_ci No None
message text latin1_swedish_ci No None
author varchar(255) latin1_swedish_ci No None
replies int(11) No None
posted varchar(255) latin1_swedish_ci No None
votes_up int(11) No 0
votes_down int(11) No 0
答案 0 :(得分:2)
更新
应张贴未注明日期。
继承你的问题:
mysql_query "INSERT INTO threads (title, message, author, posted);"
VALUES (NULL,'$_POST[title]','$_POST[message]','$_POST[author]','0','$time');
将其更改为:
mysql_query("INSERT INTO threads (title, message, author, posted) VALUES ('$_POST[title]','$_POST[message]','$_POST[author]','$time');");
我看到你也有空值,这让我相信你使用带有自动增量的ID,如果是这种情况,你也需要提供它。例如:
编辑:此处
mysql_query("INSERT INTO threads (id,title, message, author, posted) VALUES (NULL,'$_POST[title]','$_POST[message]','$_POST[author]','$time');");
请注意,直接从帖子数据中插入值是不安全的,会让您受到各种攻击。
答案 1 :(得分:0)
mysql_query "INSERT INTO threads (title, message, author, dated);"
VALUES ('$_POST[title]','$_POST[message]','$_POST[author]','$time');
你早早结束了String。应该是:
mysql_query("INSERT INTO threads (title, message, author, dated)
VALUES ('$_POST[title]','$_POST[message]','$_POST[author]','$time')");
此外,您的代码很可能成为SQL注入的目标。您应该使用MySQLi - 类和PreparedStatement来插入帖子。
答案 2 :(得分:0)
您尝试添加到新行的值多于指定的值。
mysql_query "INSERT INTO threads (title, message, author, dated);"
是您要设置的4个值
VALUES (NULL,'$_POST[title]','$_POST[message]','$_POST[author]','0','$time');
你正在分配6个值。
这是不可能的
同时验证$ _POST数据=阅读此Never trust user input。
阅读手册PHP & MYSQL
答案 3 :(得分:0)
分号结束了你的sql语句。您的查询尚未完成。您仍然需要指定要插入的值。
答案 4 :(得分:0)
问题数量:
这是经过测试的代码:
ini_set('error_reporting', E_ALL | E_STRICT);
ini_set('display_errors', 'On');
$user='root';
$pass='';
$dsn = 'mysql:dbname=test;host=localhost'; //for PDO later
mysql_connect("localhost",$user , $pass);
mysql_select_db("test");
$time = time();
if (isset($_POST) && !empty($_POST))
{
// using braces {}
$sql=<<<SQL
INSERT INTO threads (title, message, author, posted)
VALUES ('{$_POST['title']}','{$_POST['message']}','{$_POST['author']}','$time')
SQL;
echo "$_POST[title]"."Thread Posted.<br><a href='Untitled9.php'>Return</a>";
// now a PDO version of the same
try {
$pdo = new PDO($dsn, $user, $pass);
} catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();die;
}
$sth = $pdo->prepare("INSERT ino threads (title, message, author, posted)
VALUES (:title,:message,:author,:posted)");
$sth->execute(array(':title' => $_POST['title'],':message' => $_POST['message'], ':author' => $_POST['author'] ,':posted' => $time));
echo "Affected rows=".$sth->rowCount().",we are on line=".__LINE__."<br />";
echo $_POST['title']." Thread Posted.<br><a href='Untitled9.php'>Return</a>";
} // close if $_POST