尝试插入后的空白页
Posted
技术标签:
【中文标题】尝试插入后的空白页【英文标题】:Blank page after attempt to insert 【发布时间】:2011-06-05 19:01:25 【问题描述】:每当我尝试将数据插入到我的数据库“用户”中时,我总是会得到一个空白页。它没有给我任何错误,它不包含“mainmenu.php”,或者返回任何反馈。有人可以帮我吗?这是代码:
<?php
include("mainmenu.php");
$con = mysql_connect("localhost", "root", "*********");
if (!$con)
die('Connection failure.' . mysql_error());
//Variable def
$fname = $_POST['fname'];
$lname = $_POST['lname'];
$email = $_POST['email'];
$usrname = $_POST['usrname'];
$password = $_POST['password'];
mysql_select_db("users",$con) or die(mysql_error());
mysql_query("INSERT INTO data (usrname, fname, lname, password, email) VALUES ($usrname, $fname, $lname, $password, $email)") or die(mysql_error());
mysql_close($con)
echo("Thank you for registering!")
?>
我觉得很合适。
【问题讨论】:
这不是您要寻找的答案,但请了解如何参数化您的查询。如果你是新手,更是如此——最好从第一天开始就学习如何正确地做事,这样你就不会养成坏习惯。如果你不知道我在说什么,请谷歌“SQL 注入”和“PHP 参数化查询”寻求帮助。 @Brennan: 如果我能 +10... "bare with me" -- 不,我们不会和你赤身裸体。 【参考方案1】:没有错误?在脚本顶部添加:
<?php
error_reporting( E_ALL );
ini_set( 'display_errors', 1 );
【讨论】:
【参考方案2】:首先:字符串需要定界:
mysql_query("INSERT INTO data (usrname, fname, lname, password, email) VALUES ('$usrname', '$fname', '$lname', '$password', '$email')";
第二:永远不会将未经检查的用户数据传递到数据库查询中。首先对每个值使用mysql_real_escape_string()
。
【讨论】:
【参考方案3】:您没有收到任何语法错误吗?
第一
mysql_close($con)
echo("Thank you for registering!")
改成
mysql_close($con);
echo("Thank you for registering!");
其次,请引用您的 $_POST 并正确转义它 阅读这个 - Escaping single quote in PHP when inserting into MySQL)
【讨论】:
哎呀!忘记分号了!现在它显示语法错误。非常感谢! 不,现在它说我必须使用 date_default_timezone_set() 函数,无论这意味着什么。生病只是查一下。【参考方案4】:mysql_query("INSERT INTO data (usrname, fname, lname, password, email) VALUES ($usrname, $fname, $lname, $password, $email)") or die(mysql_error());
改用这个
$insert_sql = sprintf("INSERT INTO users (usrname, fname, lname, password, email) " .
"VALUES ('%s' ,'%s', '%s', '%s', %d); ",
mysqli_real_escape_string($conn, $usrname),
mysqli_real_escape_string($conn, $fname),
mysqli_real_escape_string($conn, $lname),
mysqli_real_escape_string($conn, md5($password)),
mysqli_real_escape_string($conn, $email),
mysqli_insert_id($conn));
然后查询上面的字符串
mysqli_query($conn, $insert_sql);
然后是条件句
if($insert_sql)
$usrname = $_SESSION['user_id'];
//url.ext e.g could be "home.php" or "you.html"
//header is used for redirecting a page
header("Location: url.ext");
else
$msg = "error inserting";
header("Location: " . $_SERVER['HTTP_REFERER'] . "?Message= ". $msg );
【讨论】:
以上是关于尝试插入后的空白页的主要内容,如果未能解决你的问题,请参考以下文章