2010-09-22 92 views
1

我使用一個簡單的表格,並提交我的文本框的值到數據庫,爲什麼我的表單不能在PHP中發佈?

<body> 

<?php 

if(isset($_POST["submit"])) 
$des="Insert into enquiry(Companyname,Name,Phno,Email,Address,Comments) values 
    ('".$_POST[txtcompname]."','".$_POST[txtname]."','".$_POST[txtphno]."', 
'".$_POST[txtemail]."','".$_POST[txtaddress]."','".$_POST[txtcomments]."')"; 
$res1=mysql_query($des); 

?> 

<div align="left"> 
<form action="" method="post"> 

但它似乎並沒有得到提交?任何建議

當我使用print_r($_POST);我得到

Array ([txtcompname] => xv [txtname] => xcv [txtphno] => xcvx [txtemail] => xcv [txtaddresss] => xcv [txtcomments] => xcvxcv [submit] => submit) 

,現在我得到這個錯誤,

You have an error in your SQL syntax; check the manual that corresponds to 
your MySQL server version for the right syntax to use near 'Address,Comments) 
values ('zdc','sadcv','zdsv', 'sdcv','sdvcsdv','sdcv')' at line 2 
+0

之間的空間你明白了什麼,當你'的print_r($ _ POST);'? – fabrik 2010-09-22 10:12:47

+0

你確定你有提交給表單的'submit'元素嗎?你應該真的這麼做:'if($ _ POST){}'這會給你相同的結果。 MySQL也應該是首都。是否有一個mysql_error?把'$ res1 = mysql_query($ des);'改成'$ res1 = mysql_query或者die(mysql_error());' – 2010-09-22 10:15:56

+0

沒關係。您的表單已提交。你有什麼錯誤嗎? – fabrik 2010-09-22 10:20:48

回答

1

我發現代碼中的一些錯誤只是把它...確保你所有警告的,所以你可以看到他們

1)括號的,如果,否則只有$的分配後DES變量當表單提交

2 $ _ POST是一個數組執行)..你所需要的報價$ _ POST [「txtcompname」]

最後確保提交輸入已name="submit",雖然我認爲最好通過使用if !empty($_POST)

來評估提交

祝你好運

0

$ _ POST [txtcompname]和所有其他變量應該被引用。試用$ _POST ['txtcompname']。另外,做var_dump($ _ POST)並檢查你是否擁有所有你想要的值。

+0

行情與空提交無關。 – fabrik 2010-09-22 10:19:03

4

這裏有幾個潛在的問題,但我需要看到你的整個腳本給你一個明確的答案。

問題你應該問 - 是$ _POST ['submit']設置?打印一些內容,如果發現。例如,您提交按鈕的值是「提交」而不是「提交」。

您還應該嘗試查看mysql_error()以查看數據庫是否拒絕您的查詢。例如,你的字段名稱是否正確?

最後,$ _POST [txtcompname]應該是$ _POST ['txtcompname'],您的其他$ _POST vars也需要在表單字段名稱周圍加引號。根據您的PHP版本和配置,您可能會忽略這一點,但這是不好的做法。如果沒有引號,PHP會將txtcompname解釋爲常量(由define()定義)。默認情況下,它可能被設置爲字符串txtcompname,所以它可能工作,但你不應該依賴它。另外,如果這是一個面向公衆的網站,則由於您尚未轉義或以其他方式清理您的輸入,因此您正在設置自己的SQL注入問題。如果你的輸入中有'字符,你的查詢就會中斷。

1
  1. 檢查表單提交得到
  2. 調試提交的資料(打印)
  3. 驗證//消毒數據
  4. 構建查詢調試它(打印)
  5. 推查詢到數據庫
  6. 打印錯誤(如果有的話)

如果這樣做了,你已經看到了,有失蹤enquiry(Companyname

function debug($var, $label = '') { 
    echo $label 
     . '<pre>' 
     . print_r($var, true) 
     . '</pre>'; 
} 

if (array_key_exists('submit', $_POST)) { 
    debug($_POST, '_POST'); 
    $_dbCompany = mysql_real_escape_string($_POST['txtcompname']); 
    $_dbName  = mysql_real_escape_string($_POST['txtname']); 
    $_dbPhone  = mysql_real_escape_string($_POST['txtphno']); 
    $_dbEmail  = mysql_real_escape_string($_POST['txtemail']); 
    $_dbAdress  = mysql_real_escape_string($_POST['txtaddress']); 
    $_dbComments = mysql_real_escape_string($_POST['txtcomments']); 

    $_prepareSQL = "INSERT INTO 
     enquiry (Companyname,Name,Phno,Email,Address,Comments) 
     VALUES ('%s', '%s', '%s', '%s', '%s', '%s')"; 
    $statement = sprintf($_prepareSQL, $_dbCompany, $_dbName, $_dbPhone, $_dbEmail, $_dbAdress, $_dbComments); 
    debug($statement, 'SQL-Query'); 

    $result = mysql_query($statement) || trigger_error(mysql_error(), E_USER_ERROR); 
}