2017-05-04 82 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'])并存储到变量中,第二步在sql插入查询中传递这些变量 –

+0

Lee;你真的应该尝试一些东西。没有理由不能在网上找到这个教程;有很多,如果不是数千。由于查询中缺少参数,我发现问题太宽泛且不清楚。 –

回答

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

第一件事情你需要这样做是html form tutorial

你的表单输入没有名称值可言,因此,你将无法在PHP中提取任何价值和存储

这是怎么了你的表单应该是:

<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将数据插入/ 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

试试下面code.and必须在“球员”表有一个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>