我正在使用PHP& MySQL,使用"mysql_fetch_array"
面向INSERT数据的问题。
这是我与Mysql的连接以及我显示数据的查询。
这里有2个表。 1张桌子用于展示。插入数据还有1个。
<?php
$host="localhost"; // Host name
$username="root"; // Mysql username
$password=""; // Mysql password
$db_name="skpj"; // Database name
// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
$sql="SELECT * FROM `student` WHERE cls_id = '13' ";
$result=mysql_query($sql);
// Count table rows
$count=mysql_num_rows($result);
?>
<form name="form1" method="post" action="">
<?php while($rows=mysql_fetch_array($result)){ ?>
<?php echo $rows['s_no']; ?>
<?php echo $rows['name']; ?>
<input name="s_no[]" type="hidden" id="name"
value="<?php echo $rows['s_no']; ?>">
<?php echo $rows['ic']; ?>
<?php echo $rows['cls_id']; ?>
<input name="class_n[]" type="hidden" id="cls_id"
value="<?php echo $rows['cls_id']; ?>">
<select name="att[]" id="att" style=" width:80px" >
<option value="1">Atten</option>
<option value="2">Absend</option>
<option value="3">MC</option>
</select>
<input name="tmp[]" type="hidden" id="name" value="1">
<?php } ?>
<input type="submit" name="submit" value="submit"></td>
</form>
<?php
if($submit){
for($i=0;$i<$count;$i++){
$sql1="INSERT INTO attendance (s_no, class_n, att, tmp)
VALUE '$s_no[i]','$class_n[i]','$att[i]','$tmp[i]' ";
$result1=mysql_query($sql1);
}
}
if($result1){
header("location:att2.php");
}
mysql_close();
?>
以下
是我的错误通知。
SCREAM:
忽略错误抑制注意:未定义的变量:在第67行的C:\ wamp \ www \ att \ att2.php中提交
注意:未定义的变量:第74行的C:\ wamp \ www \ att \ att2.php中的result1
此外我无法插入我的数据
答案 0 :(得分:0)
这是我的捅...让我知道这是否有帮助。我用一种对我有意义的方法对它进行了重组。再一次,你真的应该把这个代码更好地锁定。我只是在这里与失眠作斗争......我不认为我能为这篇文章做出那么多贡献。
<?php
#Use Object-Oriented Programming to open DB
$mysqli = new mysqli("$host", "$username", "$password", "$db_name");
if ( $mysqli->connect_error ) {
die('Connect Error: ' . $mysqli->connect_error);
}
$students=$mysqli->prepare("SELECT * FROM `student` WHERE cls_id = '13'");
$students->execute();
$students->store_result();
$studentslist = $students->fetch_array(MYSQLI_ASSOC);
$count = $stmt->num_rows
?>
表格文件......
<form name="form1" method="post" action="">
<?php
foreach ($studentslist as $row=>$rows) {
echo "<tr>"
echo "<td>$rows['s_no']</td>";
echo "<td>$rows['name']</td>";
echo "<td>$rows['ic']</td>";
echo "<td>$rows['cls_id']</td>";
echo "<td><select name='att[]' id='att' style=' width:80px'>";
echo " <option value='1'>Atten</option>";
echo " <option value='2'>Absend</option>";
echo " <option value='3'>MC</option>";
echo "</select></td>";
echo "<input name='class_n[]' type='hidden' id='cls_id' value='$rows['cls_id']>";
echo "<input name='s_no[]' type='hidden' id='name' value='$rows['s_no']>";
echo "<input name='tmp[]' type='hidden' id='name' value='1'>";//???? I DONT UNDERSTAND THIS VALUE
}
$students->close;
?>
<input type='submit' name='submit' value='submit'></td>
</form>
<?php
#SECURE YOUR INPUT/POST PARAMETERS TO ONLY ALLOW FROM THE SERVER ITSELF.
#JUST CHECKING FOR SUBMIT FOR NOW
if(isset($_POST["submit"])) {
$sno = $_POST['s_no'];//CAPTURED ARRAY
$cls = $_POST['class_n'];//CAPTURED ARRAY
$att = $_POST['att']);//CAPTURED ARRAY
$tmp = $_POST['tmp'][i];//CAPTURED ARRAY
for ($i = 0; $i <= count(sno); $i++) {
$insert_stmt = $mysql->prepare("INSERT INTO attendance(s_no, class_n, att, tmp) VALUES (?, ?, ?, ?)")) {
$insert_stmt->bind_param('iiii', mysql_real_escape_string($s_no[$i]), mysql_real_escape_string($class_n), mysql_real_escape_string($att), mysql_real_escape_string($tmp));
// Execute the prepared query.
if (! $insert_stmt->execute()) {
echo "Uh oh! Houston we have a problem!!";
else
//$insert_stmt->affected_rows
// DO Something here....
//$insert_stmt->close
echo "<script>console.log('Affected ".$insert_stmt->affected_rows."');</script>";
}
}
}
?>
答案 1 :(得分:-1)
试试这个:
$sno = mysql_real_escape_string($_POST['s_no'][i]);
$cls = mysql_real_escape_string($_POST['class_n'][i]);
$att = mysql_real_escape_string($_POST['att'][i]);
$tmp = mysql_real_escape_string($_POST['tmp'][i]);
$sql1="INSERT INTO attendance (s_no, class_n, att, tmp) VALUES ('$sno', '$cls', '$att', '$tmp')";