2012-03-23 65 views
0

所以我得到這個錯誤:MySQL的列失配誤差

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

(很常見的,我已經通過谷歌檢查,我的問題是,大多數的問題都是實際comlumn因爲它描述的不匹配)

我的位置表具有「user」,「latitude」,「longitude」,「posttext」,user和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 2012-03-23 14:54:07

+0

我會做的!這只是一個大學項目,但正如我下面所說,對不良做法的建議對我有幫助,所以也謝謝:) – Sheshka 2012-03-23 15:04:21

回答

2

你錯過一些報價:

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

我很確定OP的點是用於字符串連接,不應該在那裏。 – Damp 2012-03-23 14:56:00

+0

好點!我會編輯我的答案。 – Tchoupi 2012-03-23 14:57:45

+0

Doh ...感謝您的迅速幫助!我是PHP新手,因此有人指出不適宜的做法非常有幫助:) – Sheshka 2012-03-23 15:02:24

1

不應該查詢是這樣嗎?

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

嘗試用

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

記住,你必須總是過濾用戶輸入在查詢中使用它之前!
使用預處理語句可能會更好...

+0

用於準備報表 – Mike 2012-03-23 15:07:26