在mysql中插入序列化数组

时间:2014-11-21 07:25:31

标签: php mysql arrays serialization

我正在尝试将序列化数组插入到没有列名的mysql中,是否可能?

我计划在具有动态数量的文本框的函数中使用它,所以我将调用该函数并传递tablename并按顺序插入数据库。

以下是我目前的代码:

<form action = "" method = "POST">

    Username: <input required type = "text" name = "register[]" / ><br />
    Password: <input required type = "text" name = "register[]" / ><br />
    Usertype: <input required type = "text" name = "register[]"  / ><br />
    Status:   <input required type = "text" name = "register[]" / ><br />
    <input  type = "submit" name = "add" value = "add" / >

</form>

if(isset($_POST['add']))
{

    $reg = serialize($_POST['register']); //takes the data from a post operation...
    $register = mysql_real_escape_string($reg);
    $query = mysql_query("INSERT INTO user VALUES('$register')");    
}

工作查询:

$query = mysql_query("INSERT INTO users (username,password,usertype,status) VALUES('$register','2','3','4')"); 

输出:

一个:4:{I 0,S:1:&#34; 1&#34 ;; I:1; S:1:&#34; 1&#34 ;; I:2; S:1: &#34; 1&#34 ;; I:3; S:1:&#34; 1&#34 ;;} 2 3 4

3 个答案:

答案 0 :(得分:1)

您无法使用PHP serialize()方便地将多个数据插入多个MySQL字段。 serialze()将复杂的php类型转换为单个字符串。一个字符串。您可以使用它将包含所有这些值的数组存储到一个文本字段中,但这不是您想要的。

mysql_query("INSERT INTO users (username,password,usertype,status)
 VALUES('".mysql_real_escape_query($_POST['register'][0])."',
 '".mysql_real_escape_query($_POST['register'][1])."',
 '".mysql_real_escape_query($_POST['register'][2])."',
 '".mysql_real_escape_query($_POST['register'][3])."' )");

或者使用PDO:

$dbh = new PDO('mysql:dbname=test;host=localhost','root','pass');
$sth = $dbh->prepare('INSERT INTO users (username,password,usertype,status)
  VALUES(?,?,?,?)');
$sth->execute($_POST['register']);

答案 1 :(得分:0)

您忘记包含表格的字段名

$query = mysql_query("INSERT INTO user(username,password,usertype,status) VALUES('$register')"); 

答案 2 :(得分:0)

我做了工作,但使用了一种不同的方法,我使用了implode,但它是相同的

$register = "'" . implode("','", $_POST['register']) . "'";
$query = mysql_query("INSERT INTO users VALUES(null,$register)");