2

我要做的就是将用户输入的值存储到数据库中。有一个表,它有许多文本框,用户可以在其中输入他的输入。单击提交按钮后,值应该存储在 mysql 表中。我现在遇到了一些错误。我对 php 完全陌生,下面我附上了代码和屏幕截图。

//workingcode.php
<?php
$con = mysql_connect("localhost","tom","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
//select Database

mysql_select_db("sms", $con);

$result = mysql_query("SELECT * FROM dept_info", $con) or die(mysql_error());

echo "<table border='1'>";
echo '<tr> <th>Sl No</th> <th>USN</th> <th>Name</th><th>code1</th><th>code 2</th> <th>code 3</th> <th>code 4</th> <th>code 5</th> 
                <th>code 6</th> <th>code 7</th> <th>code 8</th></tr>';

while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row into a table
    echo "<tr><td>";
    echo $row['id'];
    echo "</td><td>";
    echo $row['usn'];
    echo "</td><td>";
    echo $row['name'];
    echo "</td>";
    for ($i=1; $i <= 8; $i++) {
        echo "<td> <input type='text' name='sl[{$row['usn']}][$i]' size='2' /> </td>" ;
    }
    echo '</tr>';
}

echo '
<form action = "insert.php" method = "post">
<div align="bottom">
<input type = "submit" align = "BOTTOM" value = "Proceed">
</div>
</form>
';
?>

我已将其链接到 insert.php 文件,如下所示..

  <html>
<head>
<title>Marks Entry Results</title>
</head>
<body>
<h1>Student Marks Entry Results</h1>

    <?php


        $insertData = array();
foreach ($_POST['sl'] as $usn => $codes) {
    foreach ($codes as $sl) {
        $insertData[] = sprintf("('%s', %d)", mysqli_real_escape_string($usn), intval($sl));
    }
}
$con = mysql_connect("localhost","tom","");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
//select Database

mysql_select_db("sms", $con);

$query = "INSERT INTO mytable (usn, code1) VALUES\n" . join(",\n", $insertData);
$result = mysql_query($query);
if ($result) {
echo mysql_affected_rows()." Marks inserted into database.";
} else {
echo "An error has occurred. Not added.";
}
mysql_close();
?>
</body>
</html>
//The description of the table which i made for this is
/*mysql> desc mytable;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| usn   | varchar(50) | NO   | PRI | NULL    |       |
| code1 | int(2)      | YES  |     | NULL    |       |
| code2 | int(2)      | YES  |     | NULL    |       |
| code3 | int(2)      | YES  |     | NULL    |       |
| code4 | int(2)      | YES  |     | NULL    |       |
| code5 | int(2)      | YES  |     | NULL    |       |
| code6 | int(2)      | YES  |     | NULL    |       |
| code7 | int(2)      | YES  |     | NULL    |       |
| code8 | int(2)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
9 rows in set (0.01 sec)
*/
4

1 回答 1

0

文本框不在任何表单标签内,因此当您点击提交时,文本框的值不会回传到服务器......请尝试以下操作。

echo '<form action = "insert.php" method = "post">';
while($row = mysql_fetch_array( $result )) {
    // Print out the contents of each row into a table
    echo "<tr><td>";
    echo $row['id'];
    echo "</td><td>";
    echo $row['usn'];
    echo "</td><td>";
    echo $row['name'];
    echo "</td>";
    for ($i=1; $i <= 8; $i++) {
        echo "<td> <input type='text' name='sl[{$row['usn']}][$i]' size='2' /> </td>" ;
    }
    echo '</tr>';
}

echo '
<div align="bottom">
<input type = "submit" align = "BOTTOM" value = "Proceed">
</div>
</form>';




  //insert.php

<?php




    $insertData = array();
    foreach ($_POST['sl'] as $usn => $codes) {
        foreach ($codes as $sl) {
            $insertData[] = sprintf("('%s', %d)", mysqli_real_escape_string($usn), intval($sl));
        }
    }

    $con = mysql_connect("localhost","tom","");
    if (!$con) {
       die('Could not connect: ' . mysql_error());
    }
    //select Database

    mysql_select_db("sms", $con);

    $query = "INSERT INTO mytable (usn, code1) VALUES\n" . join(",\n", $insertData);
    $result = mysql_query($query);
    if ($result) {
       echo mysql_affected_rows()." Marks inserted into database.";
    } else {
    echo "An error has occurred. Not added.";
    }
    mysql_close();
    ?>
于 2013-04-10T04:09:41.200 回答