簡體   English   中英

PHP-從表單循環向MySQL中插入多行

[英]php - insert multiple rows into mysql from form loop

所以我要在一個頁面上顯示多個html表單-效果很好,因為我只是使用一個簡單的循環將其顯示80次,但是我面臨的問題是我想采用所有80個表單並將它們提交到數據庫的多行中。 它只提交最后一張表格(80)

如果有人可以幫助我發現問題,我將不勝感激! 在提交此問題之前,我已經進行了一些搜索,但似乎找不到答案。


這是我的桌子的樣子:

在此處輸入圖片說明

這是我的表單生成器

<?php 
// Counts the number of forms
$counter = 1;

echo '<form action="insert.php" method="post">';


// Loop through forms
for ($i = 1; $i < 81; $i++) {

$username = 'admin';
$title = 'test';
$name = 'a';
$image_src = '<img src="image/'.$i.'.jpg">';
$transition = 'fade';
$group_name  = '0';


echo '<hr>' . '('. $counter .')'. '<br>';

echo "
<label>Username:</label>
<input type='text' name='username' id=' required='required' value='".$username."'/>

<br /><br />

<label>Title:</label>
<input type='text' name='title' id=' required='required' value='".$title."'/>

<br/><br />

<label>Name:</label>
<input type='text' name='name' id=' required='required' value='".$name."'/>

<br/><br />

<label>Content:</label>
<input type='text' name='content' id=' required='required' value='".$image_src."'/>

<br/><br />

<label>Image:</label>
<input type='text' name='image' id=' required='required' value='images/".$i.".jpg'/>

<br/><br />

<label>CSS Animate:</label>
<input type='text' name='cssanimate' id=' required='required' value='".$transition."'/>

<br/><br />

<label>Group Name:</label>
<input type='text' name='group_name' id=' value='0'/>

<br/><br />
";

$counter++;

}

echo '<input type="submit" value="Submit" name="submit"/>';
echo '</form>';

?>


這是我的php代碼:(insert.php)

 <?php $con=mysqli_connect("localhost","admin","password","database_name"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $sql="INSERT INTO table_name (username, title, name, content, image, cssanimate, group_name, group_sort) VALUES ('".$_POST["username"]."', '".$_POST["title"]."', '".$_POST["name"]."', '".$_POST["content"]."', '".$_POST["image"]."', '".$_POST["cssanimate"]."', '".$_POST["group_name"]."', '".$_POST["group_sort"]."') "; if (!mysqli_query($con,$sql)) { die('Error: ' . mysqli_error($con)); } echo "Added!"; mysqli_close($con); ?> 

如果您有80個具有此名稱的元素:

name='username'

那么此代碼將如何知道要使用哪個代碼?

$_POST['username']

本質上,當您的瀏覽器構建表單提交時,相同名稱的每個連續元素都會覆蓋前一個元素。 因此,您只能獲得最后一條記錄。

而是給它們一個數組樣式的名稱:

name='username[]'

(為所有重復的表單元素重復。)

然后在PHP代碼中,它本身就是一個數組:

$_POST['username']

您可以遍歷該數組:

for ($i = 0; $i < count($_POST['username']); $i++) {
    $username = $_POST['username'][$i];
    $title = $_POST['title'][$i];
    // etc.
}

假設所有數組的長度都相同。 鑒於此HTML,我認為應該如此。 但是您可以為此添加錯誤檢查,以防萬一。 無論哪種方式,循環的每次迭代都會構建與提交的“記錄”相同的變量。

從那里,您應該能夠使用這些變量構建SQL查詢。 但是 ,請注意,您當前執行此操作的方法極其不安全,並且可以使用SQL注入 要糾正這一點, 這是一個不錯的起點

旁注:您的HTML具有無效的id屬性。 另外,如果在該循環中指定id屬性,則需要確保它們有所不同。 HTML中重復的id無效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM