2013-09-22 44 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

相关问题