[英]Multiple insert in MySQL table from PHP table
我陷入了以下問題。 我有兩個php文件:一個顯示一個帶有組合框的學生列表,以將每個學生標記為“當前”或“缺席”,另一個接收這些發布並將值插入MySql表中。 我在發布數組attendance_status[]
的值時遇到問題,導致錯誤:“數組到字符串轉換”。 我知道這可能是我最想念的東西,但找不到出路。 這是我的兩個文件(我知道它已被棄用,並將相應地更新):
的index.php
?php
error_reporting( E_ALL );
ini_set('display_errors', 1);
require "config.php";
$con = mysql_connect ( DBSERVER, DBUSER, DBPASS );
mysql_select_db ( DBNAME, $con );
?>
<h1 align="center"><font color="black"><b>ATTENDANCE FOR GRADE1</font></b></h1>
<table id="attendance" border="1" cellspacing="1" cellpadding="1" >
<tr >
<th>id</th>
<th>name</th>
<th>surname</th>
<th>attendance</th>
</tr>
<?php
$query = ("SELECT * FROM `b10_18591250_JC`.`STUDENT`");
$result = mysql_query($query);
while( $row = mysql_fetch_array($result))
{
echo "<form action=insertattend.php method=POST>";
echo "<tr>";
echo "<td>" . "<input name=stid type=number value=" .$row['ID']." </td>";
echo "<td>" . "<input name=stname type=text value=" .$row['NAME']." </td>";
echo "<td>" . "<input name=stsurname type=text value=" .$row['SURNAME']." </td>";
echo "<td>";
echo "<select name=attendance_status[] id=attendance_status>";
echo "<option value=1>Present</option>";
echo "<option value=0>Absent</option>";
echo "</select>";
echo "</td>";
echo "</tr>";
}
echo"<input type=submit value=Submit>";
?>
</table>
</form>
在此頁面中發布名為insertattend.php
<?php
error_reporting( E_ALL );
ini_set('display_errors', 1);
require "config.php";
$con = mysql_connect ( DBSERVER, DBUSER, DBPASS );
mysql_select_db ( DBNAME, $con );
$stid = $_POST["stid"];
$attendance_status = $_POST["attendance_status"];
mysql_query("INSERT INTO ATTENDANCE (ID, STUDENT_ID, ATTENDANCE) VALUES
(NULL, '$stid', '$attendance_status')") or die (mysql_error());
?>
您要發布一個attackance_status數組,應該循環該數組。
<?php
while( $row = mysql_fetch_array($result))
{
echo "<form action=insertattend.php method=POST>";
echo "<tr>";
echo "<td>" . "<input name=stid[] type=number value=" .$row['ID']." </td>";
echo "<td>" . "<input name=stname type=text value=" .$row['NAME']." </td>";
echo "<td>" . "<input name=stsurname type=text value=" .$row['SURNAME']." </td>";
echo "<td>";
echo "<select name=attendance_status[] id=attendance_status>";
echo "<option value=1>Present</option>";
echo "<option value=0>Absent</option>";
echo "</select>";
echo "</td>";
echo "</tr>";
}
?>
<?php
error_reporting( E_ALL );
ini_set('display_errors', 1);
require "config.php";
$con = mysql_connect ( DBSERVER, DBUSER, DBPASS );
mysql_select_db ( DBNAME, $con );
$stid = $_POST["stid"];
$attendance_status = $_POST["attendance_status"];
for($i=0;$i<count($attendance_status);$i++){
mysql_query("INSERT INTO ATTENDANCE (ID, STUDENT_ID, ATTENDANCE) VALUES
(NULL, $stid[$i], $attendance_status[$i])") or die (mysql_error());
}
?>
您需要循環到數組。
<?php
error_reporting( E_ALL );
ini_set('display_errors', 1);
require "config.php";
$con = mysql_connect ( DBSERVER, DBUSER, DBPASS );
mysql_select_db ( DBNAME, $con );
$stid = $_POST["stid"];
$attendance_status = $_POST["attendance_status"];
$size = sizeof($attendance_status);
for ($i = 0 ; $i < $size ; $i++ ){
$value = $attendance_status[$i];
mysql_query("INSERT INTO ATTENDANCE (ID, STUDENT_ID, ATTENDANCE) VALUES
(NULL, '$stid', '$value')") or die (mysql_error());
}
?>
您可以通過為每個結果聲明一個變量來解決問題。 例如,$ id = $ row ['ID'],他們將這個值插入到您擁有的字符串中。
就像別人說的那樣。 您試圖在一個工作步驟中保存數據數組。 我已經稍微調整了文件的結構,並將stid輸入更改為array。
insertattend.php的作用是:
之后,您將獲得一個sql字符串,例如
INSERT INTO ATTENDANCE (ID, STUDENT_ID, ATTENDANCE) VALUES
(NULL, '1', '0'),
(NULL, '2', '1'),
...
(NULL, '26', '1')
可以使用mysql_query()執行。
但是要注意!
您正在使用帖子中的未轉義輸入,因此容易受到sql注入的攻擊!
閱讀此以獲取更多信息:
<?php // index.php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require "config.php";
$con = mysql_connect(DBSERVER, DBUSER, DBPASS);
mysql_select_db(DBNAME, $con);
$query = ("SELECT * FROM `b10_18591250_JC`.`STUDENT`");
$result = mysql_query($query);
?>
<h1 align="center"><font color="black"><b>ATTENDANCE FOR GRADE1</font></b></h1>
<form action=insertattend.php method=POST>
<table id="attendance" border="1" cellspacing="1" cellpadding="1">
<tr>
<th>id</th>
<th>name</th>
<th>surname</th>
<th>attendance</th>
</tr>
<?php while ($row = mysql_fetch_array($result)): ?>
<tr>
<td><input name=stid[] type=number value="<?= $row['ID'] ?>"</td>
<td><input name=stname type=text value="<?= $row['NAME'] ?>"</td>
<td><input name=stsurname type=text value="<?= $row['SURNAME'] ?>"</td>
<td>
<select name=attendance_status[] id=attendance_status>
<option value=1>Present</option>
<option value=0>Absent</option>
</select>
</td>
</tr>
<?php endwhile; ?>
</table>
<input type=submit value=Submit>
</form>
<?php // insertattend.php
error_reporting(E_ALL);
ini_set('display_errors', 1);
require "config.php";
$con = mysql_connect(DBSERVER, DBUSER, DBPASS);
mysql_select_db(DBNAME, $con);
$ids = $_POST["stid"];
$status = $_POST["attendance_status"];
$sql = "INSERT INTO ATTENDANCE (ID, STUDENT_ID, ATTENDANCE) VALUES";
foreach ($ids as $key => $value) {
$sql .= "(NULL, '$value', '$status[$key]'),";
}
$sql = rtrim($sql, ',');
mysql_query($sql) or die (mysql_error());
?>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.