这里是一个代码,用于创建一个包含帖子列表的用户的简单个人资料:
<html>
<head>
<title>Welcome ! </title>
</head>
<body>
<?php
$dbcon = mysql_connect('localhost','user','password');
if(!$dbcon)
{
die('<p>'.'Unable to connect to database server'.mysql_error().'</p>');
}
?>
<?php
//select the database
mysql_select_db("rough_site",$dbcon);
//add the user
$user_name = mysql_real_escape_string($_POST['user_name'];
$user_password =mysql_real_escape_string($_POST['user_password'];
$user_mail=mysql_real_escape_string($_POST['user_mail'];
$adduser= "INSERT INTO user (user_name, user_password, user_mail) VALUES ($user_name,
$user_password, $user_mail)";
$confirmUser = mysql_query($adduser);
if(!$confirmUser)
{
die("Sorry , but you could not be added as a member of this site . ");
}
?>
<p align="center" ><h2><em>Latest posts by you </em></h2></p><br/>
<?php
// show the latest posts by this user
$user_name = $_POST['user_name'];
$latestposts = "SELECT post_id , post_title from posts ,users where
posts.user_name=users.$user_name " ;
$showlatestposts= mysql_query($latestposts);
?>
<blockquote>
<?php
while($row=mysql_fetch_array($showlatestposts) )
{
echo '<p>'. '<a href = "showpost.php?post_id='. $row['post_id'].'">'.
$row['post_title'].'</a></p><br/>' ;
}
?>
</blockquote>
</body>
</html>
答案 0 :(得分:2)
您检查过日志文件吗?打开error_reporting(E_ALL)或者添加die(mysql_error());在你的查询...这可能有助于知道什么是错的!
如果你进行INSERT INTO
应该是
INSERT INTO用户VALUES(....)而不是SET
SET用于更新
答案 1 :(得分:1)
您的INSERT查询不是正确的语法,然后您调用die()函数,这将导致空白页。
修复查询,你应该很好。
你有:
$user_name = mysql_real_escape_string($_POST['user_name'];
$user_password =mysql_real_escape_string($_POST['user_password'];
$user_mail=mysql_real_escape_string($_POST['user_mail'];
应该是:
$user_name = mysql_real_escape_string($_POST['user_name']);
$user_password =mysql_real_escape_string($_POST['user_password']);
$user_mail=mysql_real_escape_string($_POST['user_mail']);
您没有使用括号
关闭该功能答案 2 :(得分:0)
将它放在文件的顶部:
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
?>
我猜这是一个错误,你没有被告知,这将启用错误报告。
答案 3 :(得分:0)
要将带有命名键的数组中的值插入到字符串中,并使用''
标记,必须将其括在{}
- http://www.php.net/manual/en/language.types.string.php#language.types.string.parsing中(复杂(卷曲)语法)
所以,例如,
$adduser= "INSERT INTO users set
user_name=$_POST['user_name'],
user_password=$_POST['user_password'],
user_mail =$_POST['user_mail']";
必须是
$adduser= "INSERT INTO users set
user_name=\"{$_POST['user_name']}\",
user_password=\"{$_POST['user_password']}\",
user_mail =\"{$_POST['user_mail']}\"";
答案 4 :(得分:0)
在浏览器中,如果你进入“查看源代码”,你可能会看到错误文本,由于无效的html,它可能会被隐藏在普通视图中
它可能是这里的单引号导致语法错误。
$adduser= "INSERT INTO users set
user_name=$_POST['user_name'],
user_password=$_POST['user_password'],
user_mail =$_POST['user_mail']";
尝试这样做(参见[]中的单引号被删除,因为引用的整个字符串不是必需的
$adduser= "INSERT INTO users set
user_name='$_POST[user_name]',
user_password='$_POST[user_password]',
user_mail = '$_POST[user_mail]'";
正如其他人所建议你应该清理你的sql parms 像这样的东西
$user_name = mysql_escape_string($_POST['user_name']);
$user_password = mysql_escape_string($_POST['user_password']);
$user_mail = mysql_escape_string($_POST['user_mail']);
$adduser= "INSERT INTO users set
user_name='$user_name',
user_password='$user_password',
user_mail = '$user_mail'";