2016-06-12 41 views
0

我有一個有10個字段的HTML表單,它們都是文本輸入,有1個密碼輸入。但是,從$_POST獲取它們時,我沒有任何問題 - 只有包含數字,不包含字母或空格的字段纔會插入到表中,並且實際文本中的字符根本不會插入。這是我使用來設置表的命令:php - 爲什麼只有數字字段被插入到我的表中?

$sql = "CREATE TABLE `basicInfo` (ID INT, type VARCHAR (100), value VARCHAR (100))"; 

這是我使用從陣列(其由從_POST $值)插入數據的命令。

$sql = "INSERT INTO `basicInfo` (`id`, `type`, `value`) VALUES (2, \"Username:\", ".$basicInfo[1].");"; 

這是怎麼回事?

+0

INSERT代碼在哪裏? –

+0

忘了 - 現在添加它 – SNB

+1

您還沒有引用第三個值。 –

回答

0

更改查詢

$sql = "INSERT INTO `basicInfo` (`ID`, `type`, `value`) VALUES (2, 'Username:', '".$basicInfo[1]."');"; 

而且你確定其Username:而不是Username

0

在Rishi的響應中引入/構建時,無論何時插入字符串,都應該將它們括在單引號中,以便它們不會被錯誤地解釋爲整數或不需要插入引號的其他非字符串類型。例如,仙人說,你的SQL應該是這樣的:

$sql = "INSERT INTO `basicInfo` (`ID`, `type`, `value`) VALUES (2, 'Username:', '".$basicInfo[1]."');"; 

或者,我會寫:

$user = $basicInfo[1]; 
$sql = "INSERT INTO `basicInfo` (`ID`, `type`, `value`) VALUES (2, 'Username:', '$user');"; 

我喜歡直接利用PHP的插入變量能力爲雙引用的字符串幾乎是錯誤的;閱讀起來更容易,感覺更自然。

但是,如果您提前知道表單中的所有字段,則應該創建一個將它們作爲列的表,而不是執行您正在做的操作。這應該使查詢更快,更容易編寫,並且更「正確」,因爲您將按照預期使用數據庫(對不起,並不意味着粗魯,只是事實)。例如:

$sql = "CREATE TABLE `basicInfo` (ID INT, username VARCHAR (100), password VARCHAR (100), otherField VARCHAR (100), etc...)"; 
0

試試這個。

$sql = "INSERT INTO `basicInfo` (`id`, `type`, `value`) VALUES (2, \"Username:\", \"".$basicInfo[1]."\");"; 
相關問題