字段列表中的未知列$ cat_name

时间:2014-01-29 09:49:52

标签: php mysql sql

我收到错误:字段列表中的未知列,而我确定我没有输入任何拼写错误且列存在。

任何人都知道我在俯视什么?

<?php  
//create_cat.php  
include '../includes/connection.php';  


$cat_name = mysql_real_escape_string($_POST['cat_name']);
$cat_description = mysql_real_escape_string($_POST['cat_description']);


if($_SERVER['REQUEST_METHOD'] != 'POST')  
{  
    //the form hasn't been posted yet, display it  
    echo "<form method='post' action=''>  
        Category name: <input type='text' name='cat_name' id='cat_name'/>  
        Category description: <textarea name='cat_description' id='cat_description' /></textarea>  
        <input type='submit' value='Add category' />  
     </form>"; 
} 
else 
{ 
    //the form has been posted, so save it 
    $sql = 'INSERT INTO categories(cat_name, cat_description) VALUES ($cat_name, $cat_description)';  
    $result = mysql_query($sql);  
    if(!$result)  
    {  
        //something went wrong, display the error  
        echo 'Error' . mysql_error();  
    }  
    else  
    {  
        echo 'New category successfully added.';  
    }  
}  
?> 

2 个答案:

答案 0 :(得分:3)

问题是你的SQL查询。您使用单引号,这是一个文字字符串。您的变量将不会被解析。您需要使用双引号。不仅如此,对于字符串,在将它们放入查询时,需要在它们周围加上单引号。

$sql = "INSERT INTO categories(cat_name, cat_description) VALUES ('$cat_name', '$cat_description')";

您还应该尝试不再使用 mysql _ * 。它已被折旧(意味着它将很快从PHP中删除)。尝试查看MySQLi(非常类似于MySQL)或PDO

答案 1 :(得分:2)

试试这个:

$sql = "INSERT INTO categories(cat_name, cat_description) VALUES ('$cat_name', '$cat_description')"; 

更新: 你用'开始一个字符串。这样做时,不可能在文本中使用变量,它们只是作为纯文本留下。但是当使用“变量将被评估。