字段列表中的未知列$ cat_name

我收到了错误:字段列表中的未知列,而我确信我没有做过任何拼写错误 列存在。</ p>

任何人都知道我在忽视什么?</ p>

 &lt;?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')
{
//表单尚未发布,显示它
echo“&lt; form method ='post'action =''&gt;
类别名称:&lt;输入 type ='text'name ='cat_name'id ='cat_name'/&gt;
类别说明:&lt; textarea name ='cat_description'id ='cat_description'/&gt;&lt; / textarea&gt;
&lt;输入类型 ='submit'value ='添加类别'/&gt;
&lt; / form&gt;“;

}
else
{
//表单已发布,请保存
$ sql ='INSERT INTO categories(cat_name,cat_description)VALUES($ cat_name,$ cat_description)';

$ result = mysql_query($ sql);

if(!$ result)
{
// //出错了,显示错误
echo'Error'。 mysql_error();

\
\ _ \ _ \ _ \ _ \'

}
}
?&gt;

</ code> </ pre>
</ div>

展开原文

原文

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

dqyq88053
dqyq88053 啊,我看到你有$cat_name=mysql_real_escape_string($_POST['cat_name']);
6 年多之前 回复
doukang2003
doukang2003 在使用查询之前你在哪里获取POST数据,你需要有$cat_name=$_POST[“cat_name”]然后在查询中的'$cal_name'中使用它们
6 年多之前 回复
dongshandun4363
dongshandun4363 明显缺乏这些(')!!!!
6 年多之前 回复
dongtiannai0654
dongtiannai0654 我知道,这是来自一个教程,我首先要让它工作,然后我将它改为MYSQLI
6 年多之前 回复
du7979
du7979 请尝试使用mysqli或PDO而不是mysql。Mysql目前已被弃用,并在php>=5.5.0中删除。尝试使用PreparedStatements来防止SQL注入。
6 年多之前 回复

2个回答



试试这个:</ p>

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

</ code> </ pre>

更新:
您使用'来启动字符串。 这样做时,不可能在文本中使用变量,它们只是作为纯文本留下。 但是当使用“变量将被评估。</ p>
</ div>

展开原文

原文

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.

doushang2571
doushang2571 Twan,单引号将输出字面值,双引号将输出变量存储的实际值。
6 年多之前 回复
douchuoxuan3177
douchuoxuan3177 谢谢,我不知道为什么人们之前因为它起作用而向你投票:)尽管你未经编辑的答案,我只需要将单引号更改为双引号(这有什么意义)?
6 年多之前 回复
duanping5306
duanping5306 原始编辑忘了引用值。
6 年多之前 回复
doulouli8686
doulouli8686 解释为什么。 否则下次会再问同样的问题。
6 年多之前 回复
drgzmmy6379
drgzmmy6379 还添加一些内容。
6 年多之前 回复
dsh7623
dsh7623 Downvote? 但这是正确的答案
6 年多之前 回复



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

  $ sql =“INSERT INTO categories(cat_name,cat_description)VALUES  ('$ cat_name','$ cat_description')“; 
</ code> </ pre>

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

展开原文

原文

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.

dongrang2140
dongrang2140 需要时间来解释,给我时间来编辑我的答案。
6 年多之前 回复
doupu3211
doupu3211 尽量不要这么模糊,解释问题是最重要的部分。 由于编辑而被投票!
6 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问