Can';无法让PHP脚本工作,它显示为一个空白页
以下代码创建了一个简单的用户配置文件,其中包含帖子列表:Can';无法让PHP脚本工作,它显示为一个空白页,php,mysql,web,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 serv
<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>
欢迎
将此项放在文件的顶部:
<?php
error_reporting(E_ALL);
ini_set('display_errors','On');
?>
我猜有一个错误没有告诉您,这将启用错误报告。您检查了日志文件吗?打开错误报告(E_ALL)或可能添加骰子(mysql_error());在你的询问中。。。这可能有助于了解问题所在
如果你插入到
应该是
在用户中插入值(..)且不设置
SET用于更新插入查询的语法不正确,然后调用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']);
您没有用括号来关闭函数,要从带有命名键的数组中插入值到字符串,并使用'
标记,必须将其括在{}
-(复杂(卷曲)语法)中
那么比如说,
$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']}\"";
在浏览器中,如果您转到“查看源代码”,您可能会看到错误文本,它可能由于无效的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 PARM
像这样的
$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'";
读取错误日志和/或激活错误报告。是否打开了调试?空白页意味着有一个错误,我认为它来自您使用的多行字符串,这不是PHPNOT的工作原理,这是您没有看到任何原因的原因,但您是否试图插入新记录或更新现有记录?“插入用户集…”查询?[Sun Aug 07 10:49:24 2011][error][client 127.0.0.1]PHP解析错误:语法错误,意外的T_封装的_和_空格,在第20行的/home/expander/ADBMS/htdocs/profile.PHP中需要T_字符串或T_变量或T_NUM_字符串,referer:I'T undertsnad.@kinakuta mysql支持插入集格式,没有问题。die函数应该显示他传递的字符串,而不是空白的p年龄。我修复了查询,但仍然是空白页面。但是其他php文件工作正常:?有关插入集语法,请参阅此链接。该页面是您的浏览器的空白页面还是根本不输出html?请检查源代码code@Joey,hi有一个语法错误,他在上面的评论中写道-你确定吗?SET
不仅仅用于更新!有关详细信息,请参阅此链接插入集语法。哇,我还没有想到该集也是用于插入的…不管怎样…谁是这样编码的?我在正文中添加了该语法,高于所有其他php,但我得到了一个空白页。apache正在工作,因为我可以看到其他php文件:?我收到“抱歉,无法添加”的死亡消息如果我将查询更改为您给定的。那么,您现在在SQL查询中有一个错误:)请尝试echo mysql_error()当我编辑时,code>或者只是将数据括在另一个\“\”
括号中({}
),但仍然会出现以下错误:警告:mysql\u fetch\u array()希望参数1是resource,布尔值在第55行的/home/expander/ADBMS/htdocs/profile.php中给出。我尚未在数据库中添加任何帖子。请尝试将{}
括号和\“\”
添加到您的SELECT
语句中,以-可能未正确解析,无法识别中的$user\u name
。所以$latestposts=“从帖子中选择帖子id、帖子标题、帖子所在的用户。user\u name=用户。$user\u name”
变成$latestposts=“从帖子中选择帖子id、帖子标题、帖子所在的用户。user\u name=\“{$user\u name}\”先生,你让我多受了几个小时的折磨。谢谢:D。我希望我能投票。我更改了它,但它不处理查询。在浏览器上可以看到模具功能的错误消息。没有错误或任何东西。可能尝试添加echo“转到步骤1”;2、3、4、5等每隔一段时间跟踪代码中的消息,并查看得到回音的数字。这将使您了解错误的位置