无法让PHP脚本工作,它显示为空白页面

时间:2011-08-07 05:41:11

标签: php mysql web

这里是一个代码,用于创建一个包含帖子列表的用户的简单个人资料:

<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>

5 个答案:

答案 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'";