2014-12-10 2 views
1

Я делаю простую форму, которая вставляет значения в таблице базы данных это кодPHP/MySQL: Вставка оператор не работает, как ожидалось

new_subject, PHP

 <form action="create_subject.php" method="post"> 
      <p>Menu name: 
      <input type="text" name="menu_name" value="" /> 
      <p>Position: 
      <select name="position"> 
       <?php 
       $subject_set= find_all_subjects(); 
       $subject_count=mysqli_num_rows($subject_set); 
       for($count=1; $count<=$subject_count+1; $count++){ 
       echo "<option value='{$count}' >{$count}</option>"; 
       } 
       ?> 
       </select> 
      </p> 
      <p>Visible 
       <input type="radio" value="0" name="visible" />No &nbsp; 
       <input type="radio" value="1" name="visible" />Yes 
      </p> 
      <input type="submit" value="Submit" name="submit" /> 
      <br/>   <br/> 
      <a href="manage_content.php">Cancel</a> 
    </form>    

create_subject.php

<?php 
    if(isset($_POST['submit'])){ 
     $menu_name= $_POST["menu_name"]; 
     $position = (int) $_POST["position"]; 
     $visible= (int)$_POST["visible"]; 
     $query="INSERT INTO subjects (menu_name , position , visible) VALUES($menu_name, $position, $visible)";   
     $result= mysqli_query($connection, $query); 
     if($result){ 
      header("Location : manage_content.php"); 
      exit(); 
     } 
     else { 
      echo 'There was some problem ' ; 
      echo mysqli_error($connection); 
     } 
    } 
    else { 
     header('Location: new_subject.php'); 
     exit(); 
    } 

?> 

Это ошибка Была какая-то проблема неизвестное поле 'name' // name - это значение, которое я вводил в текстовое поле. Кто-нибудь, пожалуйста, помогите мне в этом вопросе. если я не ввести значение для текстового поля других значений успешно введены в базе данных

+2

'$ menu_name', это, скорее всего, текст и его нужно указывать. –

+0

PERFECT, Большое спасибо @ Fred-ii- – Sikander

+2

Я предлагаю вам прочитать http://en.wikipedia.org/wiki/SQL_injection, прежде чем хакер получит вашу форму и будет иметь с ней нелегальный секс. – Nico

ответ

2

положить одиночные кавычки вокруг значений будут решить проблему

$query="INSERT INTO subjects (menu_name , position , visible) VALUES('$menu_name', '$position', '$visible')";

3

В качестве подсказки, чтобы легко читать и обслуживаемой SQL операторы используют sprintf():

$query= sprintf("INSERT INTO subjects (menu_name , position , visible) VALUES('%s', '%s', '%s')",$menu_name, $position, $visible); 

или

$sql = "INSERT INTO subjects (menu_name , position , visible) VALUES('%s', '%s', '%s')"; 
$query = sprintf($sql, $menu_name, $position, $visible); 
Смежные вопросы