尝试插入后的空白页

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

【讨论】:

以上是关于尝试插入后的空白页的主要内容,如果未能解决你的问题,请参考以下文章

Woocommerce 和 Paypal | Paypal 结帐后的空白页

如何删除word最后一页空白页?

正解LaTex插入空白页

正解LaTex插入空白页

Word删除表格后的空白页

Word文档中有些空白页删不掉怎么办?