错误使用“mysql_fetch_array”

时间:2016-12-31 09:56:59

标签: php mysql

我正在使用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

此外我无法插入我的数据

This is the error massage

2 个答案:

答案 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 = $_P‌​OST['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($_P‌​OST['tmp'][i]);
$sql1="INSERT INTO attendance (s_no, class_n, att, tmp) VALUES ('$sno', '$cls', '$att', '$tmp')";