【问题标题】: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" -- 不,我们不会和你赤身裸体。

标签: mysql


【解决方案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 );
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-29
        • 1970-01-01
        • 2017-09-29
        • 2018-03-30
        • 1970-01-01
        • 2015-06-17
        • 1970-01-01
        • 2021-01-10
        相关资源
        最近更新 更多