2012-09-21 40 views
1

這是我用來嘗試創建多行以插入到數據庫中的表單。使用PHP/SQL插入多行的問題

<input name="input[]" type="checkbox" value="0" id="input_0" /> Directional<br /> <br/> 
    <input name="input[]" type="checkbox" value="1" id="input_1" /> Technical <br /> 
    <br /> 
    <input name="input[]" type="checkbox" value="2" id="input_2" /> Reference <br /> 
    <br /> 
    <input name="input[]" type="checkbox" value="3" id="input_3" /> Research <br /> 
    <br /> 
    <input name="input[]" type="checkbox" value="4" id="input_4" /> Phone <br /></h3> 

    <input type="submit" name="button" id="button" value="Submit Tally" style="height: 25px; width: 100px"> 
    </Form> 

使用implode從複選框形式插入多行到MySQL數據庫的當前問題。一個循環會解決這個問題嗎?我可以看到當複選框被選中

$type = $_POST['input']; 
// $sid = $_SERVER['REMOTE_ADDR']; 
    $user = $_POST['user']; 

    if(count($type) > 0) 
    { 
    $type_string = implode(',', $type); 

    } 
    $sql = "INSERT INTO tally (tid, sid, uid, date, time, catid) 
     VALUE (NULL, 1, '$user', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '$type_string')"; 


     mysql_query($sql) or die(mysql_error()); 
    echo "Success"; 

    print_r($type_string); 
+1

SQL注入?這是肯定的,隊長。 – maiorano84

+0

你遇到的問題是什麼? – andrewsi

+0

循環會解決這個問題嗎?是的,它應該。 –

回答

0

環路肯定會正常工作,您創建從您收到作爲輸入$類型變量一些陣列後陣列(#,#,#,#),並滿足這種進入您的查詢之一。

但我希望你不會像這樣在一些網站上使用這段代碼。正如maiotano84已經評論過的那樣,您創建查詢的方式有點危險。用你的數據做一些不需要的事情是很容易的。至少你應該把你的變量通過函數像

string mysql_real_escape_string (string $unescaped_string [, resource $link_identifier = NULL ]) 

下面是這個函數的FRM網站php.net一些更多的信息。

0

計算的$type如下價值:

$i=0; 
    foreach ($_POST as $v) { 
    if(isset($v['input'.$i])) { 
    $type = $v; 
    $i++; 
    } 
    } 
0
<Form action="" method="POST"> 

    <input name="input[]" type="checkbox" value="0" id="input_0" /> Directional<br /> <br/> 
    <input name="input[]" type="checkbox" value="1" id="input_1" /> Technical <br /> 
    <br /> 
    <input name="input[]" type="checkbox" value="2" id="input_2" /> Reference <br /> 
    <br /> 
    <input name="input[]" type="checkbox" value="3" id="input_3" /> Research <br /> 
    <br /> 
    <input name="input[]" type="checkbox" value="4" id="input_4" /> Phone <br /></h3> 

    <input type="submit" name="button" id="button" value="Submit Tally" style="height: 25px; width: 100px"> 

    </Form> 

    <?php 
    $type = $_POST['input']; 
// $sid = $_SERVER['REMOTE_ADDR']; 
    $user = $_POST['user']; 

    for($i=0;$i<count($type);$i++){ 
    $sql = "INSERT INTO tally (tid, sid, uid, date, time, catid) 
     VALUE (NULL, 1, '$user', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, ".$type[$i].")"; 
    } 
    ?>