簡體   English   中英

MYSQL-INSERT錯誤,字段列表中的未知列

[英]MYSQL - INSERT error, unknown column in field list

我一直從這個簡單的mysql語句中得到以下錯誤,我看不到為什么。 我肯定它是顯而易見的。

require_once("connect.php");

$query = mysql_query("SELECT * FROM accounts ORDER BY id DESC LIMIT 1");
$row = mysql_fetch_assoc($query);

$balanceold = $row['balance'];
$difference = $_POST['predec'].".".$_POST['dec'];

$category = $_POST['category'];
$notes = $_POST['notes'];

if(isset($_POST['in'])){
$balancenew = $balanceold + $difference;
$query = mysql_query("INSERT INTO accounts(currentbalance, balancein, category, notes) VALUES (".$balancenew.", ".$difference.", ".$category.", ".$notes.")");  
if($query){
header("Location: budget.php"); 
}
else{
die(mysql_error());
}
}

給出錯誤:“字段列表”中的未知列“發薪日”

這是我的表單代碼:

<form action=process.php method=post>

&pound;
<input type=text name=predec size=7>
. 
<input type=text name=dec size=4 value=00>
<br />
<select name=category>
<option value=payday>Payday</option>
</select>
<input type=text name=notes size=20>
<input type=submit name=in value=Deposit>
<input type=submit name=out value=Withdraw>
</form> 

數據庫表“帳戶”包含以下字段:

id,int primary A_I

余額,十進制10,2

余額,十進制10,2

當前余額,十進制10,2

類別,varchar 50

筆記,varchar 255

日期,時間戳

...以該順序

試試看(用單個配額將查詢中的每個變量括起來):

mysql_query("INSERT INTO accounts(currentbalance, balancein, category, notes) 
          VALUES ('$balancenew', '$difference', '$category', '$notes')");  

最好使用mysqliPDO來防止SQL注入攻擊,您現在可以使用mysql_real_escape_string():

$balancenew = mysql_real_escape_string($balancenew);

和其他變量。

那是因為您在INSERT查詢中有語法錯誤。 字符串和日期值在sql中傳遞為單引號而不是雙引號 或不需要字符串串聯字符。 因此,根據您提供的數據,可能是

$query = mysql_query("INSERT INTO accounts(currentbalance, balancein, category, notes) 
                      VALUES ($balancenew, $difference, '$category', '$notes')");  

基本上,sql告訴您的是您正在引用插入中未在數據庫中定義的列。 提供表結構或確保列名與您在數據庫中定義的名稱完全相同。 HTH。

我想您已經錯過了用單引號將$ notes和$ category括起來的逗號。 將它們括在'中,您的問題應得到解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM