2013-09-22 42 views
0
<form action="4.php" method="POST"> 
<select name="select2[]" multiple> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="opel">Opel</option> 
    <option value="audi">Audi</option> 
</select> 
<select name="select[]" multiple> 
    <option value="volvo1">Volvo1</option> 
    <option value="saab2">Saab2</option> 
    <option value="opel3">Opel3</option> 
    <option value="audi4">Audi4</option> 
</select> 
<input type="submit" name="sub" value="submit"> 
</form> 

4.php陣列是不是插入數據庫

<?php 
mysql_connect("localhost", "root", ""); 
$db=mysql_select_db("test"); 
if(isset($_POST['sub'])) { 

$r=$_POST['select2']; 
$f=$_POST['select']; 


    $val1 = implode("", $r); 


    $val2 = implode("", $f); 


    $r=mysql_query("insert into test1 (test,test1) values ('$val1','$val2') "); 
} 


?> 

我在PHP語言工作。我使用的選擇多,並試圖在我的數據庫中添加值,但在一行中的所有值僅

+0

這到底是什麼問題?你想要插入多行嗎?它沒有插入單行嗎?請詳細說明。 – David

+0

@大衛是的。例如,如果我有兩列,即測試和測試1 ........,並且我從一個選擇中選擇volvo和saab,從其他選擇中選擇volvo1和saab1 ............... ..its顯示我這樣在一行volvovolvo1在測試和saabsaab1在test1 –

+0

那麼,你只是在數據庫上執行一個'INSERT'語句,所以它只會插入一行。您還明確使用'implode()'將數組變爲單行的單個值。這聽起來像你想要做的是循環訪問數組並執行多個'mysql_query()'調用,每一行將被插入到數據庫中。 (另外,你一定要考慮使用'mysqli'而不是'mysql',並使用預準備語句和參數化查詢。目前你的代碼容易受到SQL注入攻擊。) – David

回答

1

嘗試implode(",", $r),而不是implode("", $r)

<?php 
mysql_connect("localhost", "root", ""); 
$db=mysql_select_db("test"); 
if(isset($_POST['sub'])) { 

$r=$_POST['select2']; 
$f=$_POST['select']; 

    $val1 = implode(",", $r);// to save it as string 

    $val2 = implode(",", $f); 

    $r=mysql_query("insert into test1 (test,test1) values ('$val1','$val2') "); 
} 

// and to retrieve data 
explode(",", $result); // to convert it from string to array 

>

0

你必須使它逗號分隔爲@ jetawe說,但我認爲他的查詢不起作用。我建議你讓它在兩個查詢中保持簡單:

$val1 = implode("', '", $r); // add quotes 
    $val2 = implode("', '", $f); 

    $result_1 = mysql_query("insert into test1 (test) values ($val1) "); 
    $result_2 = mysql_query("insert into test1 (test1) values ($val2) "); 

但我不得不提一提,命名變量應該做得更好以避免混淆。在命名變量時做一些努力來減少代碼中的錯誤。
此外,您還必須使用其他方式來連接和查詢數據庫。 The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead

相關問題