无法插入数据库

时间:2014-07-31 16:54:11

标签: php mysql

我的问题是,当我提交表单时,我无法在下面的代码中将变量$ skyr,$ eftir,$ notandi,$ pass和$ mel插入到我的Mysql数据库中。 Insert语句是正确的,$ conn变量中的mysqli_connect()是正确的,我用其他文件中的其他变量测试它。那么,我的代码中的问题是什么?我做错了什么?

这是我的代码:

    <!DOCTYPE>
<html>
<head>   
<title>Skráðu þig!</title>  
<link rel="stylesheet" type "text/css" href="stylesheet.css">
<link rel='stylesheet' type "text/css" href="style_val.css"/>
</head>
<body>
<div class="container">
<banner><div class="bordi"><img src="./myndir/Banner.jpg"/></div></banner>  
<div class="front-box"></div>
<div class="skraning">  

  <?php

//RECAPTCHA - SERVER SIDE
  require_once('recaptchalib.php');
  $privatekey = "privatekey";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    $invalid = "Vinsamlegast ritaðu aftur inn stafina fyrir ofan.";
}

else{
  $invalid = "";
}
//Tekið af:https://developers.google.com/recaptcha/docs/php
error_reporting(1); error_reporting(E_ALL); ini_set('display_errors', 1);//Við viljum ekki sjá villurnar, heldur viljum við hafa hlutina á mannamáli. Við búum síðan til aðgerðir(functions) til að höndla þær villur sem kunna að koma upp.
?>
<?php
$mysql_host = "some host";
$mysql_database = "some database";
$mysql_user = "some user";
$mysql_password = "some password";
$dbname = 'some database name';

$conn = mysqli_connect($mysql_host,$mysql_user,$mysql_password,$dbname);
if(!$conn){
    echo "Get ekki tengst gagnagrunni. Vefstjóra gert viðvart";
    villupost();
}

 function villupost(){
    $to = 'arnarfreyr@hive.is';
    $subject = 'MYSQL VILLA!';
    $message = mysqli_error();
    $headers = 'sj&aacute;lfvirkur t&ouml;lvupóstur';
    mail($to,$subject,$message,$headers);

}

function sanityCheck($string, $type, $length){

  // assign the type
  $type = 'is_'.$type;

  if(!$type($string))
    {
    return FALSE;
    }
  // now we see if there is anything in the string
  elseif(empty($string))
    {
    return FALSE;
    }
  // then we check how long the string is
  elseif(strlen($string) > $length)
    {
    return FALSE;
    }
  else
    {
    // if all is well, we return TRUE
    return TRUE;
    }
}
//Tekið og breytt af: http://www.phpro.org/tutorials/Validating-User-Input.html

// define variables and initialize with empty values
$skyrErr = $eftirErr = $notandiErr = $passErr = $melErr = $c_passErr = $melErr_s ="";
$skyr = $eftir = $notandi = $pass = $mel = $c_pass = $mel_s = "";

$fylla_ut = "Þennan reit verður að fylla út.";

$fylla_rett = "Vinsamlegast fylltu út rétt netfang.";


if (isset($_POST['sub'])) {
    if (empty($_POST["skyr"])==FALSE && sanityCheck($_POST["skyr"],'string',60)!=FALSE) {
        $skyr = mysqli_real_escape_string($conn,$_POST["skyr"]);
    }
    else {
        $skyrErr = '<span class="red">'.$fylla_ut.'</span>';
        $pass = "";
        $c_pass = "";
    }

    if (empty($_POST["eftir"])==FALSE && sanityCheck($_POST["eftir"],'string',60)!=FALSE) {
        $eftir = mysqli_real_escape_string($conn,$_POST["eftir"]);
    }
    else {
        $eftirErr = '<span class="red">'.$fylla_ut.'</span>';
        $pass = "";
        $c_pass = "";
    }

    if (empty($_POST["notandi"])==FALSE && sanityCheck($_POST["notandi"],'string',15)!=FALSE){
        $notandi = mysqli_real_escape_string($conn,$_POST["notandi"]);
    }

    else {
        $notandiErr = '<span class="red">'.$fylla_ut.'</span>';
        $pass = "";
        $c_pass = "";
    }

    if (empty($_POST["pass"])==FALSE)  {


    if (!preg_match('/^(?=.*\d)(?=.*\W)(?=.*[a-z])(?=.*[A-Z]).{6,15}$/', $_POST["pass"])){
        $passErr = "Lykilorðið verður að innihalda lágstafi, hástafi, tölustafi og sérstafi t.d. !\"#$%&/";
        $pass = "";
        $c_pass = "";
        }

    else{  
    $pass = $_POST["pass"];
    $salted = mcrypt_create_iv(64);
    $pass = mysqli_real_escape_string($conn,hash('sha512',$_POST["pass"].$salted));
    }

    }
    else{
        $passErr = '<span class="red">'.$fylla_ut.'</span>';
    }   

    if (empty($_POST["mel"])==FALSE && sanityCheck($_POST["mel"],'string',60)!=FALSE){

    if (!filter_var($_POST["mel"], FILTER_VALIDATE_EMAIL)){
        $melErr = '<span class="red">'.$fylla_rett.'</span>';
        $pass = "";
        $c_pass = ""; 
    }

    else{
        $mel = mysqli_real_escape_string($conn,$_POST["mel"]);
    }}
    else{
      $melErr = '<span class="red">'.$fylla_ut.'</span>';
      $pass = "";
      $c_pass = "";
    }
    if (empty($_POST["mel_s"])==FALSE && sanityCheck($_POST["mel_s"],'string',60)!=FALSE){

    if (!filter_var($_POST["mel_s"], FILTER_VALIDATE_EMAIL)){
        $melErr_s = '<span class="red">'.$fylla_rett.'</span>';
        $pass = "";
        $c_pass = "";
      }
    if ($_POST["mel"]!=$_POST["mel_s"]){
    $melErr_s = '<span class="red">Netföng stemma ekki.</span>';
    $pass = "";
    $c_pass = "";}
    else{
      $mel_s = $_POST["mel_s"];
    }  
}
else {
   $melErr_s = '<span class="red">'.$fylla_ut.'</span>';
   $pass = "";
   $c_pass = "";
}

if (empty($_POST["c_pass"])==FALSE){ 
if($_POST["pass"]!=$_POST["c_pass"]){
  $c_passErr = '<span class="red">Lykilorð stemma ekki. Reyndu aftur.</span>';
  $pass = "";
  $c_pass = "";
}
else{
$c_pass = $_POST["c_pass"];
}
}
else{
  $c_passErr = '<span class="red">'.$fylla_ut.'</span>';
  $pass = "";
  $c_pass = "";
}

if ($skyr!=null&&$eftir!=null&&$notandi!=null&&$pass!=null&&$mel!=null/*&&$_POST["recaptcha_challenge_field"]!=null&&$_POST["recaptcha_response_field"]!=null*/){
$data = "INSERT INTO Login(Skírnarnafn,Eftirnafn,Notandanafn,Lykilorð,Tölvupóstur) 
VALUES ('$skyr', '$eftir', '$notandi', '$pass', '$mel')";
mysqli_query($conn,$data);
mysqli_close($conn);
}
}
?>
<div class="formtext"></br>Hér getur þú skráð þig. Fylltu út formið hér að neðan.
                      Athugaðu að lykilorðið má ekki vera minna en 6 stafir
                      og ekki meira en 15 stafir.
                      Reit með stjörnu verður að fylla út.</div>                      

<script>
 var RecaptchaOptions = {
    theme : 'custom',
    custom_theme_widget: 'recaptcha_widget'
 };
 </script>                      
<form class="formpos" method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<label>Skírnarnafn:<span class="red"> *</span></label>
<input class="skrainnp" type="text" name="skyr" value="<?php echo htmlspecialchars($skyr);?>" maxlength="60"/>
<span class="form_err"><?php echo $skyrErr;?></span>
</br>
</br>
<label>Eftirnafn:<span class="red"> *</span></label>
<input class="skrainnp" type="text" name="eftir" class="eftirnafn" value="<?php echo htmlspecialchars($eftir);?>" maxlength="60"/>
<span class="form_err"><?php echo $eftirErr;?></span></label>
</br>
</br>
<label>Notandanafn:<span class="red"> *</span></label>
<input class="skrainnp" type="text" name="notandi" class="notandanafn" value="<?php echo htmlspecialchars($notandi);?>" maxlength="15"/>
<span class="form_err"><?php echo $notandiErr;?></span>
<br/>
<br/>
<label>Lykilorð:<span class="red"> *</span><input class="skrainnp" type="password" name="pass" class="lykilorð" value="<?php echo htmlspecialchars($pass);?>" maxlength="15"/>
<span class="form_err"><?php echo $passErr;?></span>
</br>
</br>
<label>Staðfesta lykilorð:<span class="red"> *</span></label><input class="skrainnp" type="password" name="c_pass" class="s_lykilorð" value="<?php echo htmlspecialchars($c_pass);?>" maxlength="15"/>
<span class="form_err"><?php echo $c_passErr;?></span>
</br>
</br>   
<label>Netfang:<span class= "red"> *<span></label>
<input class="skrainnp" type="text" name="mel" class="postur" value="<?php echo htmlspecialchars($mel)?>" maxlength="60"></input>
<span class="form_err"><?php echo $melErr;?></span>
</br>
</br>
<label>Netfang aftur:<span class= "red"> *<span></label>
<input class="skrainnp" type="text" name="mel_s" class="postur_s" value="<?php echo htmlspecialchars($mel_s)?>" maxlength="60"/>
<span class="form_err"><?php echo $melErr_s;?></span>
</br>
</br>
<!--RECAPTCHA-HTML BYRJAR-->

<div>
<div id="recaptcha_widget" style="display:none">

   <div id="recaptcha_image"></div>
   <div class="recaptcha_only_if_incorrect_sol" style="color:red"></div>

   <span class="recaptcha_only_if_image">Ritaðu stafina fyrir ofan:</span>
   <span class="recaptcha_only_if_audio">Ritaðu tölustafina sem þú heyrir:</span>

   <input type="text" id="recaptcha_response_field" name="recaptcha_response_field" />

   <div class="recaptcha_nytt"><a href="javascript:Recaptcha.reload()">Fá nýtt</a></div>
   <div class="recaptcha_lesa"><a href="javascript:Recaptcha.switch_type('audio')">Lesa upp</a></div>
   <div class="recaptcha_mynd"><a href="javascript:Recaptcha.switch_type('image')">Fá mynd</a></div>

   <div class="recaptcha_hjalp"><a href="javascript:Recaptcha.showhelp()">Hjálp</a></div>
 <script type="text/javascript"
    src="http://www.google.com/recaptcha/api/challenge?k=6LeHcvcSAAAAABMGhQ7ZqaWpJs0L0b93VKguMQwN">
 </script>
 <noscript>
   <iframe src="http://www.google.com/recaptcha/api/noscript?k=6LeHcvcSAAAAABMGhQ7ZqaWpJs0L0b93VKguMQwN"
        height="300" width="500" frameborder="0"></iframe><br>
   <textarea name="recaptcha_challenge_field" rows="3" cols="40">
   </textarea>
   <input type="hidden" name="recaptcha_response_field"
        value="manual_challenge">
 </noscript>-->
<!--RECAPTCHA-HTML ENDAR-->
<?php //RECAPTCHA
require_once('recaptchalib.php');
$publickey = "6LeHcvcSAAAAABMGhQ7ZqaWpJs0L0b93VKguMQwN"; // you got this from the signup page
echo recaptcha_get_html($publickey);
echo "<span class='recaptcha_err'>".$invalid."</span>";
?>
</br>
</br>
<input type="submit" name="sub" class="senda" value="Áfram"/>
</form>
</div>
</div>
</body> 
</html>

UPTADE: 我发现insert语句不起作用。 我确信连接正常,它已在其他文件中使用,并在正常工作时使用。然后出了点问题。我不知道为什么。

那么,下面这段代码有什么问题?

$skyr = "Arnar";
$eftir = "Kristinsson";
$notandi = "afk0901";
$pass = "afk0901"; 
$mel = "arnarfreyr@hive.is";
    $data = "INSERT INTO Login(Skírnarnafn,Eftirnafn,Notandanafn,Lykilorð,Tölvupóstur) 
    VALUES ('$skyr', '$eftir', '$notandi', '$pass', '$mel')";
    mysqli_query($conn,$data);
    mysqli_close($conn);

1 个答案:

答案 0 :(得分:0)

看起来我发现了什么问题......这不是我的代码。这是数据库。我使用了错误的索引。我将索引类型从唯一更改为索引。问题解决了。谢谢谁试图回答:)我真的在5天后发现了这个...我不知道为什么我之前没有记住这一点。