2013-09-30 77 views
-3

我試圖運行PHP的SQL查詢..使用此代碼如下:PHP列數不匹配

$sql="INSERT into members (forename, surname, dob_day, dob_month, dob_year, gender, address, invested, patrol_type, patrol, dr_address, 

parent1_contact1_title, parent1_contact1_forename, parent1_contact1_surname, parent1_contact1_email, parent1_contact1_address, parent1_contact1_home, parent1_contact1_mobile, parent1_contact1_other, 

parent1_contact2_title, parent1_contact2_forename, parent1_contact2_surname, parent1_contact2_email, parent1_contact2_address, parent1_contact2_home, parent2_contact1_mobile, parent1_contact2_other, 

parent2_contact1_title, parent1_contact1_forename, parent1_contact1_surname, parent1_contact1_email, parent1_contact1_address, parent1_contact1_home, parent1_contact1_mobile, parent1_contact1_other, 

parent1_contact2_title, parent1_contact2_forename, parent1_contact2_surname, parent1_contact2_email, parent1_contact2_address, parent1_contact2_home, parent2_contact1_mobile, parent1_contact2_other 

) values ('".addslashes($_POST["forename"])."', '".addslashes($_POST["surname"])."', '".addslashes($_POST["dob_day"])."', '".addslashes($_POST["dob_month"])."', '".addslashes($_POST["dob_year"])."', '".addslashes($_POST["gender"])."', '".addslashes($_POST["address"])."', '".addslashes($_POST["invested"])."', '".addslashes($_POST["patrol_type"])."', '".addslashes($_POST["patrol"])."', '".addslashes($_POST["dr_address"])."', 

'".addslashes($_POST["parent1_contact1_title"])."', '".addslashes($_POST["parent1_contact1_forename"])."', '".addslashes($_POST["parent1_contact1_surname"])."', '".addslashes($_POST["parent1_contact1_email"])."', '".addslashes($_POST["parent1_contact1_address"])."', '".addslashes($_POST["parent1_contact1_home"])."', '".addslashes($_POST["parent1_contact1_mobile"])."', '".addslashes($_POST["parent1_contact1_other"])."', 

'".addslashes($_POST["parent1_contact2_title"])."', '".addslashes($_POST["parent1_contact2_forename"])."', '".addslashes($_POST["parent1_contact2_surname"])."', '".addslashes($_POST["parent1_contact2_email"])."', '".addslashes($_POST["parent1_contact2_address"])."', '".addslashes($_POST["parent1_contact2_home"])."', '".addslashes($_POST["parent1_contact2_mobile"])."', '".addslashes($_POST["parent1_contact2_other"])."', 

'".addslashes($_POST["parent2_contact2_title"])."', '".addslashes($_POST["parent1_contact2_forename"])."', '".addslashes($_POST["parent1_contact2_surname"])."', '".addslashes($_POST["parent1_contact2_email"])."', '".addslashes($_POST["parent1_contact2_address"])."', '".addslashes($_POST["parent1_contact2_home"])."', '".addslashes($_POST["parent1_contact2_mobile"])."', '".addslashes($_POST["parent1_contact2_other"])."' 

) "; 

,但我得到一個錯誤說:Column count doesn't match value count at row 1

我找不到錯誤在哪裏 - 任何人都可以找到它?

+0

輸出結果字符串(替換後)和計數列(列表列表與值列表) –

+0

對列名稱計數您的值(...) –

+7

哦......我的眼睛... –

回答

1

我將您的查詢複製到文本編輯器中。我使用逗號作爲分隔符將它分成幾行,我有43列和35個值。
使用在你的表的列數較少,分裂在廣義模式的記錄,像這樣:

Table students: 
    id, forename, surname, details, parent1_id, parent2_id, etc.. 
    Table parents: 
    id (used in table students), name, contact details, etc.. 
+0

謝謝Ollie Ollie。英語對我來說不是原生的。 – mavrosxristoforos

0

你插入查詢具有這些列不止一次:

parent1_contact2_title, parent1_contact2_forename, parent1_contact2_surname, parent1_contact2_email, parent1_contact2_address, parent1_contact2_home, parent2_contact1_mobile, parent1_contact2_other 

但不會出現在查詢中兩次。因此,您指定的列數與您提供的值不同。

0

你有列名錯誤,其中一些是重複的:

$sql="INSERT into members (forename, surname, dob_day, dob_month, dob_year, gender, address, invested, patrol_type, patrol, dr_address, 

parent1_contact1_title, parent1_contact1_forename, parent1_contact1_surname, parent1_contact1_email, parent1_contact1_address, parent1_contact1_home, parent1_contact1_mobile, parent1_contact1_other, 

parent1_contact2_title, parent1_contact2_forename, parent1_contact2_surname, parent1_contact2_email, parent1_contact2_address, parent1_contact2_home, parent2_contact1_mobile, parent1_contact2_other, 

parent2_contact1_title, parent1_contact1_forename, parent1_contact1_surname, parent1_contact1_email, parent1_contact1_address, parent1_contact1_home, parent1_contact1_mobile, parent1_contact1_other, 

parent1_contact2_title, parent1_contact2_forename, parent1_contact2_surname, parent1_contact2_email, parent1_contact2_address, parent1_contact2_home, parent2_contact1_mobile, parent1_contact2_other 

) 

例如parent1_contact1_forename被複制,修復列名相關

0

這是因爲列在表中的號碼和您在表格中提供的數字值不同。錯誤表示在sql語句中指定的列數不匹配提供的值的數量。
對於e.g如果我有名稱測試和列的表如下:
1)。 2)。名稱
3)。年齡
4)。性別
現在,讓我們在這個表中創建插入數據

$con = mysqli_connect("host","user","pass","dbName"); 
if(!$con) 
die(); 
$res = mysqli_query($con,"INSERT INTO test(id,name,age,sex) VALUES(abc,xyz,pqr)"); 
//the query statement will generate an error similar to your's because the number 
//of parameters to be filled does not match the values supplied 
0

這些都是你的數據庫中的字段:

$sql="INSERT into members (
forename, 
surname, 
dob_day, 
dob_month, 
dob_year, 
gender, 
address, 
invested, 
patrol_type, 
patrol, 
dr_address, 
parent1_contact1_title, 
parent1_contact1_forename, 
parent1_contact1_surname, 
parent1_contact1_email, 
parent1_contact1_address, 
parent1_contact1_home, 
parent1_contact1_mobile, 
parent1_contact1_other, 
parent1_contact2_title, 
parent1_contact2_forename, 
parent1_contact2_surname, 
parent1_contact2_email, 
parent1_contact2_address, 
parent1_contact2_home, 
parent2_contact1_mobile, 
parent1_contact2_other, 
parent2_contact1_title, 
parent1_contact1_forename, 
parent1_contact1_surname, 
parent1_contact1_email, 
parent1_contact1_address, 
parent1_contact1_home, 
parent1_contact1_mobile, 
parent1_contact1_other, 
parent1_contact2_title, 
parent1_contact2_forename, 
parent1_contact2_surname, 
parent1_contact2_email, 
parent1_contact2_address, 
parent1_contact2_home, 
parent2_contact1_mobile, 
parent1_contact2_other 

這些是你正在試圖存儲的值:

'".addslashes($_POST["forename"])."', 
'".addslashes($_POST["surname"])."', 
'".addslashes($_POST["dob_day"])."', 
'".addslashes($_POST["dob_month"])."', 
'".addslashes($_POST["dob_year"])."', 
'".addslashes($_POST["gender"])."', 
'".addslashes($_POST["address"])."', 
'".addslashes($_POST["invested"])."', 
'".addslashes($_POST["patrol_type"])."', 
'".addslashes($_POST["patrol"])."', 
'".addslashes($_POST["dr_address"])."', 
'".addslashes($_POST["parent1_contact1_title"])."', 
'".addslashes($_POST["parent1_contact1_forename"])."', 
'".addslashes($_POST["parent1_contact1_surname"])."', 
'".addslashes($_POST["parent1_contact1_email"])."', 
'".addslashes($_POST["parent1_contact1_address"])."', 
'".addslashes($_POST["parent1_contact1_home"])."', 
'".addslashes($_POST["parent1_contact1_mobile"])."', 
'".addslashes($_POST["parent1_contact1_other"])."', 
'".addslashes($_POST["parent1_contact2_title"])."', 
'".addslashes($_POST["parent1_contact2_forename"])."', 
'".addslashes($_POST["parent1_contact2_surname"])."', 
'".addslashes($_POST["parent1_contact2_email"])."', 
'".addslashes($_POST["parent1_contact2_address"])."', 
'".addslashes($_POST["parent1_contact2_home"])."', 
'".addslashes($_POST["parent1_contact2_mobile"])."', 
'".addslashes($_POST["parent1_contact2_other"])."', 
'".addslashes($_POST["parent2_contact2_title"])."', 
'".addslashes($_POST["parent1_contact2_forename"])."', 
'".addslashes($_POST["parent1_contact2_surname"])."', 
'".addslashes($_POST["parent1_contact2_email"])."', 
'".addslashes($_POST["parent1_contact2_address"])."', 
'".addslashes($_POST["parent1_contact2_home"])."', 
'".addslashes($_POST["parent1_contact2_mobile"])."', 
'".addslashes($_POST["parent1_contact2_other"])."' 

無論是您的複製/粘貼已經無法使用,或者由於大量重複的數據,您的數據庫結構需要進行審查。