2017-05-04 16 views
-1

PHPを使用してHTMLフォームからユーザー入力からデータベースに情報を挿入する方法を理解しようとしていますが、100%確実ではありません。ユーザー入力を使用してPHPからユーザーデータを挿入する

ここに私が現在持っているものがあります。

HTML

<form id="playerForm" action="insert.php" method="post"> 
     Player Name: <input type="text" value="playerName"> 
     Player Race: <input type="text" value="playerRace"> 
     Player Class: <input type="text" value="playerClass"> 
     <button id="submit">Submit</button> 
    </form> 

PHP

<?php 
    $servername = "localhost"; 
    $username = "username"; 
    $password = "password"; 
    $dbname = "database"; 

    //create connection 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 

    //check connection 
    if(!$conn){ 
    die("Unable to connect to MySQL: " . mysqli_connect_error()); 
    } 

    echo "connected successfully"."<br><br>"; 

    //selects the different data types from the professions table 
    $sql = "INSERT INTO Player (PlayerName, PlayerRace, PlayerClass) 
    VALUES()"; 

    $result = $conn->query($sql);     

    $conn->close(); 
+0

正確な質問はありますか? –

+0

最初のステップ:フォームの値($ _POST ['playerName'])をフェッチして変数に格納し、2番目のステップでこれらの変数をSQL挿入クエリに渡します。 –

+0

Lee;あなたは本当に何かを試していたはずです。このためにWebでチュートリアルを見つけられなかった理由はありません。数千ではないにせよ、多くがあります。クエリーにパラメータがないと、質問があまりにも広く、不明瞭になることがあります。 –

答えて

1

あなたが名前を使用しない場合は、あなたがデータを取得することはできませんし、この中でそう空の入力フィールドを設定したい場合は、フォームname attributeを割り当てる必要があります場合は値を設定しない

<form id="playerForm" action="insert.php" method="post"> 
     Player Name: <input type="text" name="playerName" value="playerName"> 
     Player Race: <input type="text" name="playerRace" value="playerRace"> 
     Player Class: <input type="text" name="playerClass" value="playerClass"> 
     <input type="submit" value="submit"> 
    </form> 

入力フィールドを空にする場合は、値を設定しないでください。

<form id="playerForm" action="insert.php" method="post"> 
     Player Name: <input type="text" name="playerName" value=""> 
     Player Race: <input type="text" name="playerRace" value=""> 
     Player Class: <input type="text" name="playerClass" value=""> 
     <input type="submit" value="submit"> 
    </form> 

と、これはあなたのinsert.phpファイルや重要なことは、あなたのテーブル構造は大丈夫とも自動インクリメントを使用する必要があるということですし、あなたを助ける主キー

<?php 

    $link = mysqli_connect("localhost", "jgbydtoz_root", "123warcraft", "jgbydtoz_warcraft"); 


    if($link === false){ 

     die("ERROR: Could not connect. " . mysqli_connect_error()); 

    } 


    $playerName = mysqli_real_escape_string($link, $_POST['playerName']); 

    $playerRace = mysqli_real_escape_string($link, $_POST['playerRace']); 

    $playerClass = mysqli_real_escape_string($link, $_POST['playerClass']); 

    $sql = "INSERT INTO Player (`PlayerName`, `PlayerRace`, `PlayerClass`) VALUES ('$playerName', '$playerRace', '$playerClass')"; 

    if(mysqli_query($link, $sql)){ 

     echo "added successfully."; 

    } else{ 

     echo "ERROR: . " . mysqli_error($link); 

    } 



    mysqli_close($link); 

    ?> 
+0

私の更新答えをチェックしてください。 –

+1

私のdownvoteではなく、この ''は動作しません。それらはjs/ajaxでのみ動作し、純粋なPHPでは動作しません。 OPが投稿したものだと分かっていますが、それも修正しておくべきです。編集:このコメントは、元の投稿ごとにhttp://stackoverflow.com/revisions/43781750/1 –

+0

私の答えはまた –

1

あなたがする必要がある最初の事やるです

、全く名前値を持っていないので、あなたがPHPで任意の値を抽出し、これはどのようにあなたの形式である

保存することができませんあなたのフォーム入力html form tutorialなります。

<form id="playerForm" action="insert.php" method="post"> 
     Player Name: <input type="text" name="playerName"> 
     Player Race: <input type="text" name="playerRace"> 
     Player Class: <input type="text" name="playerClass"> 
     <button id="submit" type="submit">Submit</button> 
</form> 

次にinsert.phpチェックに入力が設定され、proccesing前に空ではありませんされている場合。すべてが設定されているならば、あなたは良い/データを挿入するmysqli prepared statementsを使用し、その後行くcode.and以下pdo prepared statements

<?php 

$servername = "localhost"; 
$username = "username"; 
$password = "password"; 
$dbname = "database";  

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 

$errors = ""; 
$fields = array("playerName","playerRace","playerClass"); 

foreach ($fields as $fieldName) { 

    if (!isset($_POST[$fieldName]) && !empty($_POST[$fieldName])) { 

     $errors++; 
     die("Fill in all the fields"); 
    } 
} 

if ($errors <= 0) { 

    $playername = $_POST['playerName']; 
    $playerrace = $_POST['playerRace']; 
    $playerclass = $_POST['playerClass']; 

    $sql = $conn->prepare("INSERT INTO Player (PlayerName,PlayerRace,PlayerClass) VALUES(?,?,?"); 
    $sql->bind_param("sss", $playername, $playerrace, $playerclass); 

    if ($sql->execute()) { 

     echo "data inserted"; 
    } else { 

     echo "Error : " . $conn->error; // in live site send this to error log not browser 
    } 
} 


?> 
2

試しはあなたの「プレイヤー」テーブル内の1つのAUTO_INCREMENTフィールドを持っている必要があります。

<?php 
    $servername = "localhost"; 
    $username = "username"; 
    $password = "password"; 
    $dbname = "database"; 

    //create connection 
    $conn = mysqli_connect($servername, $username, $password, $dbname); 

    //check connection 
    if(!$conn){ 
     die("Unable to connect to MySQL: " . mysqli_connect_error()); 
    } 

    echo "connected successfully"."<br><br>"; 
    if(isset($_REQUEST["submit"])){ 
     $p_name = $_POST['playerName']; 
     $p_race = $_POST['playerRace']; 
     $p_class = $_POST['playerClass']; 
     //selects the different data types from the professions table 
     $sql = mysqli_query($conn,"INSERT INTO Player (PlayerName, PlayerRace, PlayerClass) 
      VALUES('$p_name','$p_race','$p_class')"); 


    }    

    $conn->close(); 
    ?> 


<form id="playerForm" method="post"> 
      Player Name: <input type="text" name="playerName"> 
      Player Race: <input type="text" name="playerRace"> 
      Player Class: <input type="text" name="playerClass"> 
      <input type="submit" name="submit" value="SUBMIT"/> 
     </form> 
関連する問題