PHP/MySQL的:插入语句工作不正常

问题描述:

我做简单的表格,在数据库表中插入值,这是代码PHP/MySQL的:插入语句工作不正常

new_subject,PHP

​​

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(); 
    } 

?> 

现在这是错误 有一些问题未知字段“名称”//名称是我在文本框中输入的值。有人请帮助我解决这个问题。如果我不输入文本框中输入其它值值在数据库中成功进入

+2

'$ menu_name'这是最有可能的文本,需要引用。 – 2014-12-10 22:21:08

+0

完美,非常感谢@ Fred-ii- – Sikander 2014-12-10 22:26:20

+2

我建议您在黑客进入您的表单并与其发生非法性行为之前阅读http://en.wikipedia.org/wiki/SQL_injection。 – Nico 2014-12-10 22:38:10

把单引号括起来的值就会解决这个问题

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

作为一个提示,使易于阅读和维护的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);