[英]Store associative array in database using serialize in php
我之前已经问过这个,现在我知道如何序列化它。 但现在问题是我遇到了这个错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''address1t', 'address2t', 'cityt', 'provincet', 'postalCODEt', 'contactNOt', 'em' at line 1
这是我的关联数组:
Array ( [0] => Array ( [recNAME] => NAME1 [company] => [address1] => ADDRESS1 [address2] => [city] => CITY1 [province] => PROVINCE1 [postalCODE] => 0 [contactNO] => 926XXXXX [email] => XXXXX@yahoo.com [commodity] => COMMODITY1 [type] => [weight] => 0 [length] => 0 [width] => 0 [height] => 0 [decVAL] => 0 [specINSTRUC] => [shipREF] => REF1 [payMETHOD] => CashOnDelivery [packNO] => 200XXXX-XXX [trackNO] => 200XXXX-XXX ) [1] => Array ( [recNAME] => NAME2 [company] => [address1] => ADDRESS2 [address2] => [city] => CITY2 [province] => PROVINCE2 [postalCODE] => 0 [contactNO] => 905XXXXXX [email] => XXXXX@hotmail.com [commodity] => COMMODITY2 [type] => [weight] => 0 [length] => 0 [width] => 0 [height] => 0 [decVAL] => 361 [specINSTRUC] => I'm in the above given address from M-F, 11AM-6PM, call or text me for confirmation [shipREF] => 200XXXXX [payMETHOD] => CashOnDelivery [packNO] => 200XXXX-XXX [trackNO] => 200XXXX-XXX ) )
序列化数组看起来像这样:
a:4:{i:0;a:21:{s:7:"recNAME";s:18:" NAME1";s:7:"company";s:0:"";s:8:"address1";s:57:"ADDRESS1";s:8:"address2";s:0:"";s:4:"city";s:8:"CITY1";s:8:"province";s:8:"PROVINCE1";s:10:"postalCODE";s:1:"0";s:9:"contactNO";s:10:"9XXXXXXXX";s:5:"email";s:21:"XXXX@yahoo.com";s:9:"commodity";s:13:"COMMODITY1";s:4:"type";s:0:"";s:6:"weight";s:1:"0";s:6:"length";s:1:"0";s:5:"width";s:1:"0";s:6:"height";s:1:"0";s:6:"decVAL";s:2:"99";s:11:"specINSTRUC";s:0:"";s:7:"shipREF";s:9:"200XXXX";s:9:"payMETHOD";s:14:"CashOnDelivery";s:6:"packNO";s:14:"200XXXX-XXX";s:7:"trackNO";s:14:"200XXXX-XXX";}i:1;a:21:{s:7:"recNAME";s:32:" NAME2";s:7:"company";s:0:"";s:8:"address1";s:52:"ADDRESS1";s:8:"address2";s:0:"";s:4:"city";s:6:"CITY2";s:8:"province";s:12:"PROVINCE2";s:10:"postalCODE";s:1:"0";s:9:"contactNO";s:10:"9XXXXXX";s:5:"email";s:23:"XXXX@hotmail.com";s:9:"commodity";s:7:"Spyder ";s:4:"type";s:0:"";s:6:"weight";s:1:"0";s:6:"length";s:1:"0";s:5:"width";s:1:"0";s:6:"height";s:1:"0";s:6:"decVAL";s:3:"361";s:11:"specINSTRUC";s:83:"I'm in the above given address from M-F, 11AM-6PM, call or text me for confirmation";s:7:"shipREF";s:9:"200XXXXX";s:9:"payMETHOD";s:14:"CashOnDelivery";s:6:"packNO";s:14:"200XXXX-XXX";s:7:"trackNO";s:14:"200XXXX-XXX";}}
这是我的序列化代码:
$newstring = serialize($array);
@mysql_query("INSERT INTO `temp` (`recNAMEt`, `companyt`, 'address1t', 'address2t', 'cityt', 'provincet', 'postalCODEt', 'contactNOt', 'emailt', 'commodityt', 'typet', 'weightt', 'lengtht', 'widtht', 'heightt', 'decVALt', 'specINSTRUCt', 'shipREFt', 'payMETHODt', 'packNOt', 'trackNOt' ) VALUES('', $newstring)") or die('Error: ' . mysql_error());
这是我第一次序列化,我仍在处理事情。 我仍然不知道出了什么问题,因为这段代码适用于普通数组。 我试过这样做:
VALUES('', '', $newstring)")
仍然没有运气。 recNAMEt,companyt等是我表中的列名。 请帮忙。 谢谢并恭祝安康。
你错了@nicole
首先序列化将数组转换为字符串
所以有两种方式
a)在数据库中有一个列,并在该列中插入序列化数组
例如:
Instead of this
@mysql_query("INSERT INTO `temp` (`recNAMEt`, `companyt`, 'address1t', 'address2t', 'cityt', 'provincet', 'postalCODEt', 'contactNOt', 'emailt', 'commodityt', 'typet', 'weightt', 'lengtht', 'widtht', 'heightt', 'decVALt', 'specINSTRUCt', 'shipREFt', 'payMETHODt', 'packNOt', 'trackNOt' ) VALUES('', $newstring)") or die('Error: ' . mysql_error());
You can have
@mysql_query("INSERT INTO `temp` (`details` ) VALUES($newstring)") or die('Error: ' . mysql_error());
当你从数据库中获取结果时,你自己拥有了这个值并且你会得到你的数组
b)这有点棘手,但会解决你的目的,这将产生你的查询
$sql = sprintf(
'INSERT INTO `temp`(%s) VALUES ("%s")',
implode(',',array_keys($_newstring )),
implode('","',array_values($_newstring ))
);
mysql_query($sql);
假设有一个包含多个复选框的表单,用户可以一次选择多个复选框,然后我们需要将这些值以数组格式存储在表的单个列中。
查看下面的代码片段,了解如何在仅几行代码中完成此操作 - :)
HTML代码
<form action="path_to_action_page" method="post">
<input type="checkbox" name="value[]" value="value1">Value1
<input type="checkbox" name="value[]" value="value2">Value2
<input type="checkbox" name="value[]" value="value3">Value3
<input type="checkbox" name="value[]" value="value4">Value4
<input type="checkbox" name="value[]" value="value5">Value5
PHP代码检索表单数据: -
$data= $_POST['value'];
$values= serialize($data);
在数据库中插入数据的代码: -
//数据库连接的代码
$insert_query = "INSERT INTO TABLE_NAME(col_name) VALUES('$values')";
$result_insert = mysql_query($insert_query);
从数据库中检索值的代码: -
$query = "SELECT col_name FROM TABLE_NAME WHERE condition_to_search_the_database";
$result = mysql_query($query);
while($values = mysql_fetch_array($result)){
$values= unserialize($values['col_name']);
foreach($values as $value)
{
//code to play with $value
e.g. - print $value;
}}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.