2013-07-07 51 views
-2

提交表格時,我收到此錯誤信息:表單提交錯誤:列數並不在行匹配值計數1

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

這裏是我的代碼:

<?php 
    $con = mysqli_connect("abcd.com", "test", "test", "test"); 
    // Check connection 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
    $sql = "INSERT INTO survey1 (location, age, gender, marital, q1, q1_1, q1_2, q1_3, q1_4, q2, q3, q4, q5, q5_1, q5_2, q5_3, q5_4, q6, q7, q8, q8_others, q9, q9_others, q10, q11, q12, q12_1, q12_2, q12_3, q12_4, q13, q14, q15, q16, q17, q17_others, q18, q19, q20, q21, q22, q23, q24, q25, q25_others, q26, q27, q28, q29, q30, q31, q32, q32_1, q32_2, q32_3, q32_4, q33, q34, q34_others) VALUES('$_POST[location]','$_POST[age]','$_POST[gender]', '$_POST[marital]', '$_POST[q1]', '$_POST[q1_1]', '$_POST[q1_2]', '$_POST[q1_3]', '$_POST[q1_4]', '$_POST[q2]', '$_POST[q3]', '$_POST[q4]', '$_POST[q5]', '$_POST[q5_1]', '$_POST[q5_2]', '$_POST[q5_3]', '$_POST[q5_4]', '$_POST[q6]', '$_POST[q7]', '$_POST[q8]', '$_POST[q8_others]', '$_POST[q9]', '$_POST[q9_others]', '$_POST[q10]', '$_POST[q11]', '$_POST[q12]', '$_POST[q12_1]', '$_POST[q12_2]', '$_POST[q12_3]', '$_POST[q12_4]', '$_POST[q13]', '$_POST[q14]', '$_POST[q15]', '$_POST[q16]', '$_POST[q17]', '$_POST[q18]', '$_POST[q19]', '$_POST[q20]', '$_POST[q21]', '$_POST[q22]', '$_POST[q23]', '$_POST[q24]', '$_POST[q25]', '$_POST[q25_others]', '$_POST[q26]', '$_POST[q27]', '$_POST[q28]', '$_POST[q29]', '$_POST[q30]', '$_POST[q31]', '$_POST[q32]', '$_POST[q32_1]', '$_POST[q32_2]', '$_POST[q32_3]', '$_POST[q32_4]', '$_POST[q33]', '$_POST[q34]', '$_POST[q34_others]')"; 
    if (!mysqli_query($con, $sql)) { 
     die('Error: ' . mysqli_error($con)); 
    } 
    header("Location: thankyou.html"); 
    mysqli_close($con); 
?> 

回答

3

這錯誤是不言自明的 - 您試圖通過提供Y值來設置X列,但X必須等於Y.在其他作品中,如果您嘗試通過提供2個值來設置3列,則會出現該錯誤。檢查傳遞的參數和添加缺少的一個

如果你正在使用MySQL,那麼我建議使用不同的語法,這是不容易出錯:

INSERT INTO table SET column=value, column2=value2, ...; 

BTW:你所要求的麻煩不會逃避你的價值觀。切勿將用戶提供的內容直接傳遞給您的查詢 - 請始終使用mysqli_real_escape_string()或類似方法轉義。或者使用PDO。

0

我建議您使用PHP框架或MySQLi類,其中包含使您的工作流更快,更容易的功能。

如果您尋找一個PHP框架,請花時間根據您的需求(例如您的項目/應用程序的大小)和您的編程知識進行選擇。

一個好的條目將是Codeigniter,因爲它很容易理解(潛入源代碼)有一個低的學習曲線和詳盡的文檔。

對於MySQLi類,我可以推薦https://github.com/ajillion/PHP-MySQLi-Database-Class

0

你有一個q17_others列不包含在你插入的值集合中。

你列的樣本是這樣的:

... q16, q17, q17_others, q18, ... 

而且從你的價值觀相同的部分:

... '$_POST[q16]', '$_POST[q17]', '$_POST[q18]', ... 

另外,我想一切馬爾辛ORLOWSKI同意他的回答說。這不是將數據插入數據庫的安全方法。至少你應該逃避輸入,但最好是使用類似PDO和bindParam調用。

相關問題