2013-08-22 36 views
-3

我不完全確定,但它看起來像我的表單發佈的值,例如,我的第一個文本框中的Text1沒有被PHP識別。我的HTML表單值未被識別

一整晚都在摔跤,希望有人能幫忙嗎?感謝名單。

<?php 
$dbhost = 'localhost'; 
$dbuser = 'xeuser'; 
$dbpass = 'xepass'; 
$conn = mysql_connect($dbhost, $dbuser, $dbpass); 

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

$sql = 'INSERT INTO `amis_q1`.`crop1_8_9` (
`IDENTIFICATION` , `ADD` , `MARKET` , `DISTRICT` , `ENUMERATOR` , `Seller` , `Name_of_Unit` , `Number_of_Sellers` , `Average_Weight` , `Estimated_Weights` , `Type_of_Seller` , `Tramsport` , `Source` , `Remarks` , `CHECKED` , `BY` , `SUPERVISOR` , `OFFICE` , `DATE` , `INITIALS` 
) 
VALUES 
( $_POST['Text1'],'$_POST[Text2]','$_POST[Text3]','$_POST[Text4]','$_POST[Text5]','$_POST[Text6]','$_POST[Text7]','$_POST[Text8]','$_POST[Text9]','$_POST[Text10]','$_POST[Text11]','$_POST[Text12]','$_POST[Text13]','$_POST[Text14]','$_POST[Text15]','$_POST[Text16]','$_POST[Text17]','$_POST[Text18]','$_POST[Text19]','$_POST[Text20]' 
)'; 

mysql_select_db('amis_q1'); 
$retval = mysql_query($sql, $conn); 
if(! $retval) 
{ 
die('Could not enter data: ' . mysql_error()); 
} 
print 'Inputted'; 
mysql_close($conn); 
?> 
+2

請停止正在做的事情並閱讀PHP教程。即使你的代碼工作(這是一個非常基本的語法錯誤,由未轉義的'''引起),它將**非常**易受SQL注入攻擊。 – meagar

+0

什麼是'Text1','Text2' ..? –

+0

發佈HTML,我們不能告訴服務器端代碼 – tomaroo

回答

1

總體問題:不從安全的角度使用mysql功能,並讀有關SQL注入,爲你的代碼(以下正確的代碼)都是極其錯誤的。

除此之外,問題在於你在$sql中使用單引號。這裏是做變量的後半部分的正確方法:

$sql = ') VALUES (' . $_POST['Text1'] . ', ' . $_POST['Text2'] . ')'; 

...這是在PHP中連接字符串的正確方法。

+0

值得注意的是,你絕對不能這樣做,儘管它修復了語法問題,但它留下了* gaping *安全漏洞。 – meagar

+0

完全同意,這就是爲什麼我從第一句開始,無論如何,OP將不可避免地完全忽略它。 – jterry

+0

你還沒有修改任何字符串更改。 '$ foo =「abc $ def [hij] jkl」;'在功能上與'$ foo =「abc」相同。 $ def ['hij']。 「jkl」;'我會-1,但SQL注入警告將是一個加號,所以...... +0 –