sql insert语句语法?

时间:2015-11-03 13:26:53

标签: php mysql

我更喜欢在PHP中而不是因为时间而在mysqli中。

如何使用php在MySQL中插入部分列?

例如,我在sql中的列表是:courseid,code,title,cr,prerequisite,std_id,status,grade。我使用table来获取php中的数据,但状态和等级是空的数据,因为我希望用户在他们之间查看每个学生从课程列表中完成的课程。 我希望用户将其与使用特定数据修复的其他列插入。 我在这段代码中遇到的问题是插入数据是新的记录,我想在两个列中插入状态和等级,当然是名称。

如何仅在状态和成绩中插入

enter code here
     <?php
    error_reporting(0);
   include('config.php');
    $sql="select * from studyplan";
    $result=mysql_query($sql);
    while ($row = mysql_fetch_array($result)){

    $id=$row['courseid'];

    $code=$row['code'];
    $Title=$row['title'];
          $cr=$row['cr'];
       $pre=$row['prerequisite'];
       $std=$row['std_id'];
       $status=$row['status'];
      $grade=$row['grade'];


  echo "<tr  class='edit_tr' id='$id'>

   <td class='edit_td'>
            <span class='text' id='one_$id' >$id </span>
          </td>

          <td class='edit_td'>
            <span class='text' id='one_$id' >$code </span>
          </td>

          <td class='edit_td'>
            <span class='text' id='two_$id' >$Title</span>
          </td>

          <td class='edit_td'>
            <span class='text' id='three_$id' >$cr</span>
          </td>

          <td class='edit_td'>
            <span class='text' id='three_$id' >$pre</span>
          </td>

          <td class='edit_td'>
            <span class='text' id='three_$id' >$std</span>
          </td> 
          <td class='edit_td'>
            <span class='text' id='three_$id' >$status</span>
        <select name='status' id='status'>

            <option value=''>Completed</option>
                        <option value='B'>Not complate</option>


                    </select>

    </td>

          <td class='edit_td'>
            <span class='text' id='three_$id' >$grade</span>

                                    <select name='grade' id='grade'>
      <option value=''>A</option>
            <option value='B'>B</option>
            <option value='C'>C</option>
            <option value='D'>D</option>
            <option value='F'>F</option>
    </select>

    </td> 

    </tr>";  

 }

 echo '<input type="hidden" name="courseid" value="' . $id . '" />';

   ?>

  <p align="center"><a href="year.html">Go Back</a> </p>
    <p><input type="submit" value="Add Link"></p>
</tr>
   </table>
</form>
  </div>
 </body>
  </html>

<?php 

   if ($_SERVER['REQUEST_METHOD'] == "POST") { 


  $status=$_POST['status'];
  $grade=$_POST['grade'];

插入声明

    $SQL = " INSERT INTO studyplan ";
    $SQL = $SQL . " (status, grade) VALUES ";
    $SQL = $SQL . " ('$status', '$grade') ";
    $result = mysql_db_query($db,"$SQL",$cid);

    if (!$result) { 
     echo("ERROR: " . mysql_error() . "\n$SQL\n");  }

    echo ("New Link Added\n");

   } 

  mysql_close($cid); 
 ?>

enter image description here

我希望它像小图片

enter image description here

1 个答案:

答案 0 :(得分:3)

您的表单没有名为courseid的输入元素,这就是索引未定义的原因。在这种情况下,可能想要将其添加为隐藏元素,因为它似乎不是用户输入的值:

echo '<input type="hidden" name="courseid" value="' . $id . '" />';

有几点需要注意:

  1. 您的代码 全开 SQL注入攻击 。这基本上意味着任何用户都可以在数据库上执行他们想要的任何代码。请read this(当然还有this)并考虑使用准备好的陈述。始终将用户输入视为,而不是可执行代码
  2. 即使值在“隐藏”字段中,也不意味着用户无法修改它。在执行操作和更新数据之前,始终验证所有用户输入。否则,用户可以修改他们想要的数据库中的任何记录,无论是否属于他们。
  3. 即使添加了此内容,我也无法保证您的表单会按预期“正常工作”。您似乎完全缺少form标记,这可能会导致意外行为,因为您似乎打算在该表中为每个记录创建一个单独的表单。表结构本身似乎也被破坏了(我看到多个</tr>标签),所以没有人知道浏览器将如何解释这一点。请修复您的标记,否则您可能会遇到一些非常奇怪且难以诊断的错误。