2016-10-12 5 views
0

技術的には、すべての入力を受け入れますが、私のコードに何か問題があるというエラーメッセージはありません。インサートは、データベースのinsert文を試して、実際の値で変数を変更して、そのように働いたので、奇妙なことに動作していないコードの下部にあります。MYSQLの挿入が機能していません

は私のワークベンチで、このinsert文をしようとしましたし、それが働いた:

INSERT INTO members (organization,login,password,name,title,profil,created,logout_time,timezone) VALUES ('1','Kristen','123','Kristen Crooks','Volunteer','2','2016-10-11 14:09','0','0') 

コード:

<html> 
    <head> 
     <meta charset="UTF-8"> 
     <title></title> 
    <center><b> Volunteer Management </b></center> 

    <center> 
    <a href="index.php">Add User </a> 
    <a href="add_skill.php"> Add Skills </a> 
    <a href="assign_user.php">Assign User</a> 
    </center> 
</head> 
<body> 
    <?php 

     $config = parse_ini_file('/config.ini'); 


     $conn = new mysqli($config['servername'], $config['username'], $config['password'], $config['database']); 

     if ($conn->connect_error) { 
      die("Connection failed: " . $conn->connect_error); 
     } 

     $sql = "SELECT skillName FROM skills"; 
     $result = $conn->query($sql); 
     $num=mysqli_num_rows($result); 
     $conn->close(); 
    ?> 
    <form method="get"> 

     Username: <br> 
     <input type="text" name="username"> <br> 
     Password: <br> 
     <input type="text" name="password"> <br> 
     Name: <br> 
     <input type="text" name="name"> <br> 
     Title: <br> 
     <input type="text" name="title"> <br> <br> 


     Permission: 

     <select id="permission" name="permission"> 
      <option selected disabled>Choose here</option> 
      <option value="0">Admin</option> 
      <option value="1">Project Manager</option> 
      <option value="2">Volunteer</option> 
      <option value="6">Accounting Officer</option> 
     </select> <br><br> 



     Skills: <br> 

     <?php 

      $i=0;while ($row = mysqli_fetch_assoc($result)) { 

      $skillName=$row['skillName']; 

     ?> 

     <input type="checkbox" name="skills" value="<?php echo $skillName; ?>" ><?php echo $skillName; ?><br> 

     <?php $i++;} ?> 
     <br> 

     <input type="submit" name="submit"> 

    </form> 

    <?php 
      if(isset($_GET['submit'])) 
      { 
       $config = parse_ini_file('/config.ini'); 


       $conn = new mysqli($config['servername'], $config['username'], $config['password'], $config['database']); 

       if ($conn->connect_error) { 
        die("Connection failed: " . $conn->connect_error); 
       } 

       $login = $_GET['username']; 
       $password = $_GET['password']; 
       $name = $_GET['name']; 
       $title = $_GET['title']; 
       $profil = $_GET['permission']; 
       $created = date('Y-m-d H:i:s'); 

       $sql = "INSERT INTO members (organization,login,password,name,title,profil,created,logout_time,timezone) 
             VALUES ('1','$login','$password','$name','$title','$profil','$created','0','0')"; 
       $result = $conn->query($sql) or die('Error, insert query failed'); 

       $conn->close(); 
      } 
    ?> 



</body> 

+2

あなたは決してそれらをチェックすることがないので、エラーはありません。実際に結果を使用する前に '$ conn-> close()'しているので、結果を取得する方法はありません。 –

+2

あなたのコードはSQLインジェクションの脆弱性を持っています。フィールドのどれかに 'を追加すると、挿入は機能しません。 –

+0

''しかしエラーメッセージはありません " - このコードは実際にはチェックしません*データベースからのエラーの場合エラーを無視することは、何も持たないことと同じではありません。ここでSQLインジェクションの脆弱性があると、SQLクエリで* anything *を実行しようとしている可能性があります。 – David

答えて

0

ではありません私はすでにコードを解剖し、$created = date('Y-m-d H:i:s');は、エラーの原因となっていることが表示されます。私がinsert文のデータにインクルードしないようにしようとすると、うまくいきました!私はシステムから日付を取得する別の方法を取得する必要がありますね。

また、日付形式がVARCHARで日付ではなく、別の問題が設定された長さに収まらないという理由でエラーが発生する理由を確認しました。サーバーで検出されない理由を尋ねたいのですが、そのようなエラーがあることを

-1
  1. チェックPHPのログとMySQLのログを、そこにあるもの書き。
  2. INSERTの前にエコーを入れ、スクリプトがその場所に来るかどうか確認してください。

エコーがworking-されていない場合は、問題がわかりましたINSERT

+0

これは文字どおり違いはありません。 –

+0

文字列の作成方法を変更しても、結果の文字列は変更されません。 '$ x =" a "。 "b" 'v。 '$ x =" ab "'は完全な同じ文字列を生成します。あなたが変数を補間しているかどうかに関係なく、まったく同じ文字列が生成されます。 –

+0

@TarlanMammadzada PHPログにエラーはありません –

関連する問題