我正在尝试将序列化数组插入到没有列名的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
答案 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)");