2012-03-23 44 views
0

だから私はこのエラーを取得しています:MySQLの列の不一致エラー

Error: Column count doesn't match value count at row 1 

(非常に一般的な、と私はグーグルで確認しました、そして、私の問題は、問題のほとんどは、実際comlumnであるということです私のロケーションテーブルは "user"、 "latitude"、 "経度"、 "posttext"を持ち、ユーザとポストテキストは両方ともvarcharで、latとlongはintです。当分の間、私はちょうどユーザーとposttext値で値を挿入しようとしています。私は私のPHPからクエリを取り出し、phpmyadminのSQLの部分でそれを実行し、それは正常に実行されるので、なぜ私はエラーを取得しているのか分からない。
PHPのフォームはテキストボックスからポストデータを供給し、これはPHPの処理コードです:

<?php 
error_reporting(E_ALL); 

$username = $_POST['user']; 
$textToPost = $_POST['textToPost']; 
$con = mysql_connect("127.0.0.1","*","*"); 

if (!$con) 
    { 
die('Could not connect: ' . mysql_error()); 
    } 

mysql_select_db("test"); 

$sql= "INSERT INTO location(user, posttext) 
VALUES ('.$username.,.$textToPost.')"; 

if (!mysql_query($sql)) 
    { 
    die('Error: ' . mysql_error()); 
    } 
    echo "1 record added"; 
mysql_close($con); 
echo $username; 
echo $textToPost; 
    ?> 

だから私はそれは私の一部に非常に基本的な構文エラーです望んでいる、誰かが助けることができますか?

+0

このようにクエリにデータを挿入すると、mysql注入が発生し、非常に危険です!問題が解決したら、mysql_real_escapeやパラメータ化されたクエリを調べることをお勧めします。 – Damp

+0

私はしなければならない!それは大学のプロジェクトだけですが、私が下で述べたように、貧しい練習に関するアドバイスは私にとって役に立ちます。ありがとうございます:) – Sheshka

答えて

2

あなたが不足しているいくつかの引用符:

$sql= "INSERT INTO location(user, posttext) 
VALUES ('".$username."','".$textToPost."')"; 
+1

私はOPのドットが文字列連結のためにあり、そこにはいけないと確信しています。 – Damp

+0

良い点!私は私の答えを編集します。 – Tchoupi

+0

Doh ...迅速なサポートに感謝します!私はPHPに慣れていないので、人にも忘れられない習慣を指摘させることは非常に役に立ちます:) – Sheshka

1

は、クエリは、このようなことではないでしょうか?あなたは常にクエリでそれを使用する前に、ユーザー入力をサニタイズしなければならない覚えておいてください

$sql= "INSERT INTO location(user, posttext) 
     VALUES ('".$username."','".$textToPost."')"; 

$sql= "INSERT INTO location(user, posttext) 
VALUES ('".$username."','".$textToPost."')"; 
1

試してみてください!
準備されたステートメントを使用する方が良い場合があります。

+0

プリペアドステートメントの+1 – Mike