6

この単純な 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> 

データベース テーブル「accounts」には、次のフィールドが含まれています。

id、int プライマリ A_I

バランシン、10 進数 10,2

バランスアウト、10 進数 10,2

現在の残高、10 進数 10,2

カテゴリ、varchar 50

メモ、varchar 255

日付、タイムスタンプ

...その順序で

4

4 に答える 4

14

これを試してください(クエリ内の各変数を単一のクォータで囲みます):

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

SQL インジェクション攻撃を防ぐためにmysqliまたはPDOを使用することをお勧めします。今のところ mysql_real_escape_string() を使用できます。

$balancenew = mysql_real_escape_string($balancenew);

および他の変数について。

于 2013-03-29T19:48:19.790 に答える
0

$notes と $category を囲む単一の逆コンマを見逃していると思います。それらを ' で囲むと、問題は解決するはずです。

于 2014-04-16T13:23:25.653 に答える
0

基本的に、データベースで定義されていない挿入内の列を参照していることをSQLが伝えています。テーブル構造を指定するか、列名がデータベースで定義したとおりであることを確認してください。HTH。

于 2013-03-29T19:47:12.657 に答える