2015-11-03 3 views
0

Я предпочитаю делать это в php не в mysqli из-за времени.sql insert stat синтаксис

Как вставить часть столбца в MySQL, используя php?

Например, моя таблица столбцов в sql: courseid, code, title, cr, предварительное условие, std_id, статус, класс. Я использовал таблицу для извлечения данных в php, но статус и класс не содержат данных, потому что я хочу, чтобы пользователь их просматривал, чтобы узнать, какие курсы каждый ученик заполнил из списка курсов. Я хочу, чтобы пользователь вставлял их в другой столбец, который фиксируется конкретными данными. Проблема, с которой я сталкиваюсь в этом коде, заключается в том, что данные вставки поступают в новую запись, и я хочу вставить только два столбца, которые являются статусом, а Grade - с именами конечно.

Как вставить в только в статусе и Grade

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

Если вы можете, вы должны [прекратить использование 'mysql_ *' функций] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). [Эти расширения] (http://php.net/manual/en/migration70.removed-exts-sapis.php) были удалены в PHP 7. Узнайте о [подготовленном] (http: //en.wikipedia.org/wiki/Prepared_statement) для [PDO] (http://php.net/manual/en/pdo.prepared-statements.php) и [MySQLi] (http://php.net/manual/en/mysqli .quickstart.prepared-statements.php) и рассмотрим использование PDO, [это действительно не сложно] (http://jayblanchard.net/demystifying_php_pdo.html). –

+0

Вы должны действительно перейти к PDO или mysqli и подготовленным операторам, чтобы избежать внедрения sql. Это также решит вашу текущую проблему, которая, возможно, вы используете sql, и никогда не находите совпадение из-за пробела после '$ id' – jeroen

+0

[Ваш скрипт подвержен риску вторжений SQL Injection.] (Http://stackoverflow.com/ вопросы/60174 /, как-может-я-предотвращать-SQL-инъекции-в-PHP) –

ответ

3

В вашей форме нет элемента ввода с именем courseid, поэтому индекс не определен. Вы вероятно хотите добавить его как скрытый элемент в этом случае, так как он не появляется, чтобы быть введенным пользователем значения:

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

Несколько вещей, чтобы отметить:

  1. Ваших код широко открытый до SQL-атаки на инъекции. Это в основном означает, что любой пользователь может выполнить любой код, который им нужен в вашей базе данных. Пожалуйста, read this (и, конечно, this) и изучите подготовленные заявления. Всегда обрабатывайте пользовательский ввод как значения, а не как исполняемый код.
  2. Несмотря на то, что значение находится в «скрытом» поле, это не означает, что пользователь не может его изменить. Всегда проверяет все пользовательские данные перед выполнением действия и обновлением данных. В противном случае пользователи могут изменять любую запись, которую они хотят в своей базе данных, независимо от того, принадлежит она или нет.
  3. Даже с этим добавлением я не могу гарантировать, что ваша форма будет «работать», как ожидалось. Кажется, что вы полностью потеряли теги form, что может привести к неожиданному поведению, поскольку, похоже, вы намерены иметь отдельную форму для каждой записи в этой таблице. Сама структура таблицы также, кажется, сломана (я вижу несколько тегов </tr>), поэтому не известно, как браузер будет интерпретировать все это. Исправьте свою разметку, или вы, вероятно, столкнетесь с некоторыми очень странными и трудными для диагностики ошибок.
Смежные вопросы