user3173360
user3173360

Reputation:

Unknown column $cat_name in field list

I got the error: unknown column in field list, while I know for sure I haven't made any typos and the columns exist.

Anyone know what I'm overlooking?

<?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.';  
    }  
}  
?> 

Upvotes: 0

Views: 762

Answers (2)

Styphon
Styphon

Reputation: 10447

The problem is your SQL query. You used single quotation marks, which is for a literal string. Your variables will not be parsed in. You need to use double quotation marks. Not only that, but for strings, you need to put single quotation marks around them when putting them into queries.

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

You should also try not to use mysql_* anymore. It's been depreciated (meaning it will be removed from PHP soon). Try looking at MySQLi (very similar to MySQL) or PDO instead.

Upvotes: 3

sobyte
sobyte

Reputation: 96

Try this:

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

Update: You used ' to start a string. When doing this its not possible to use variables in the text, they will just be leaved as plain text. But when using " the variables will be evaluated.

Upvotes: 3

Related Questions