2014-01-13 72 views
0

我的想法就像是網上商店的購物籃。

我有填入表格由PHP類的物品清單:

<?php while($info=msqli_fetch_array($query)){ ?> 
    <Input type="text" id="someid1" value="<?php echo $info['info']; ?>"> 
    <Input type="Checkbox" id="checkid1" value="1"> 
    <Input type="Checkbox" id="checkid2" value="2"> 
<?php } ?> 

我想用POST提交。 每行的下一個頁面上應做到了這一點:

mysqli的查詢

INSERT into booking (text,variable1,variable2) 
    VALUES ('$_POST['someid1']','$_POST['checkid1']','$_POST['checkid2']'; 

是否有一個解決方案?

+0

通過使用mysqli_ *或PDO方法防止自己進行mysql注入。此外,你應該使用name屬性和數組註解。所以你可以在提交後循環它。 –

+0

我使用mysqli?。 – HKK

+0

@HKK您應該使用預先準備的語句。 – jeroen

回答

0

你可以使用foreach,但恕我直言並不是一個非常安全的事情,你想要做什麼。

+0

在表單元素中使用數組註記沒有任何問題。我認爲不處理/消毒服務器上的數據將是唯一的問題。 –

+0

我沒有說這是錯的,我使用它。但是我在將數據保存到dddbb之前先清理數據。 順便說一句,我不知道爲什麼是投票。用foreach可以完成他所要求的,但不會爲他編碼。 – gonzalon

-1

你應該在你的html中使用數組,然後你得到$_POST數組中的相應數組。請注意,您所需要的name屬性:

<input name="someid[<?php echo $info['id']; ?>]" id="someid1" value="<?php echo $info['info']; ?>"> 
<input name="checkid[<?php echo $info['id']; ?>]" id="checkid1" value="1"> 
// etc. 

現在$_POST['someid']等將是一個數組,你可以遍歷。

請注意,您需要使用預準備語句將信息存儲在數據庫中。

+0

這個Loop如何工作? – HKK

+0

@HKK'foreach($ _POST ['someid'] as $ key => $ value)'其中'$ key'匹配上一頁的$ info ['id']'。 – jeroen

3

您可以使用括號來設置命名輸入,以將結果作爲數組服務器端來獲得。例如:

<input type="text" name="fruits[1]" value="apple" /> 
<input type="text" name="fruits[2]" value="orange" /> 

在服務器端:

<?php 
print_r($_POST['fruits']); 
?> 

array(
    1 => 'apple', 
    2 => 'orange', 
) 

這解決了問題。但是你的代碼暗示了其他應該真正解決的問題。

如果您只是將$_POST變量轉儲到查詢中,您正在詢問SQL注入。使用PHP的PDO功能並參數化您的輸入。查看PHP PDO prepared statements的答案中的第二個例子以獲取更多信息。

+0

這個想法是查看一個包含文章的籃子,您可以在其中編輯文章文本並從3個複選框中選擇文章應該發送的位置,並且可以在表格中插入該行(SQL) – HKK

+0

這個代碼可以在正常的php版本中完成,而不是那個「=>」的我沒有得到該版本。 – HKK

+0

「正常的PHP版本」是什麼意思? =>是完全正常的數組語法 –