2016-08-20 58 views
0

我在.php文件中有一個表單。在動作中,我將$ _POST變量發送到另一個.php文件,其中我將表單/輸入結果添加到數據庫表中。通過字符串之間的變量'for'循環插入到MySQL表中

但是在一個特定的地方似乎有問題。表正確創建,有連接。但是,我無法插入數據。

這裏是我原來的.php文件的輸入。它們產生不出差錯:

<div class="form-group"> 
    <input class="form-control" name="player<?php echo $i; ?>-fn" placeholder="First name" type="text" <?php if($i>5){echo "disabled ";}?> /> 
</div> 
<div class="form-group"> 
    <input class="form-control" name="player<?php echo $i; ?>-ln" placeholder="Last name" type="text" <?php if($i>5){echo "disabled ";}?> /> 
</div> 
<div class="form-group"> 
    <input class="form-control" name="player<?php echo $i; ?>-nr" placeholder="Number" type="number" <?php if($i>5){echo "disabled ";}?> /> 
</div> <?php } ?> 
在PHP文件,其中i發送變量

,我創建一個表:

$team_name = $_POST["team"]; 
$query = "CREATE TABLE " . strtolower($team_name) . " (id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,team_name varchar(255) NOT NULL,short_name varchar(255) NOT NULL)"; 
mysqli_query($_SESSION["mySqlLink"],$query); 

這裏沒有錯誤,創建表。

誤差(未插入到表)似乎是這裏:

for($i=1; $i<=12; $i++){ 
    if(!empty($_POST["player". $i ."-fn"]) && !empty($_POST["player". $i ."-ln"]) && !empty($_POST["player". $i ."-nr"])){ 
     $first_name = $_POST["player". $i ."-fn"]; 
     $last_name = $_POST["player". $i ."-ln"]; 
     $number = $_POST["player". $i ."-nr"]; 
     $query = "INSERT INTO ". $team_name ." (number,first_name,last_name) VALUES ('$number','$first_name','$last_name')"; 
     mysqli_query($_SESSION["mySqlLink"],$query); 
    } 
    else break; 
} 

我有12個輸入,但沒有一個被插入到表中。什麼是正確的方法來做到這一點?

+0

盧卡斯回答了。我們不需要標題或問題中的狀態。 – Drew

+0

Mark Ravi的答案在箭頭下面帶有綠色的複選標記:p – Drew

+0

**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)和['bind_param'](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢中。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **絕不**將'$ _POST'或'$ _GET'數據直接放入查詢中,如果有人試圖利用您的錯誤,這會非常有害。 – tadman

回答

1

表列名(ID,TEAM_NAME,SHORT_NAME) 您正試圖插入(號,名字,姓氏) 插入列名應該是相同的表列名 代碼就會像下面:

for($i=1; $i<=12; $i++){ 
    if(!empty($_POST["player". $i ."-fn"]) && !empty($_POST["player". $i ."-ln"]) && !empty($_POST["player". $i ."-nr"])){ 
     $first_name = $_POST["player". $i ."-fn"]; 
     $last_name = $_POST["player". $i ."-ln"]; 
     $number = $_POST["player". $i ."-nr"]; 
     $query = "INSERT INTO ". $team_name ." (id,team_name,short_name) VALUES ('$number','$first_name','$last_name')"; 
     mysqli_query($_SESSION["mySqlLink"],$query); 
    } 
    else break; 
} 
+1

哦,我的上帝。這樣一個愚蠢的錯誤。感謝您的通知。我感到不安。 –

相關問題