我有一个包含一些元素的数组:
array(1) { ["dump"]=> string(21) "["0.0",1.1,2.2,99.99]" }
我需要将它们插入到我的表中,但我不知道要使用哪种数据类型。
define('SECURE', true);
require "connect_to_mysql.php";
$sqlCommand = "CREATE TABLE example (
id int(11) NOT NULL auto_increment,
inserts float(5),
PRIMARY KEY (id),
UNIQUE KEY user_name (inserts))";
if ($mysqli->query($sqlCommand)) {
echo "Your example table has been created successfully!";
} else {
echo "CRITICAL ERROR;".$mysqli->error;
}
此外,每个数组元素应位于单独的数据字段中。 我该怎么做?
更新
var_dump($_POST); // gives: array(1) { ["dump"]=> string(17) "[3.3,4.3,3.4,4.4]" }
$var["dump"] = $_POST;
$arr = json_decode($var["dump"], true);
$col1 = $arr[0];
$col2 = $arr[1];
$col3 = $arr[2];
$col4 = $arr[3];
我需要做什么: 1.计算元素,在这种情况下:4。 2.将每个元素保存在单独的变量中。 3.在表格中插入这些元素
jsen_encode在这种情况下只返回错误
答案 0 :(得分:0)
你应该使用以下命令来创建表
$sqlCommand = "CREATE TABLE example (
id int(11) NOT NULL auto_increment,
inserts1 float(5,2),inserts2 float(5,2),
inserts3 float(5,2),inserts4 float(5,2),
PRIMARY KEY (id),
)";
答案 1 :(得分:0)
你的变量只是单个字符串。你需要将它拆分为4个变量。最简单的方法是使用变量格式的json_decode()
。还有@ alok.kumar说。您需要4列(我认为NUMERIC
优于FLOAT
)
这是示例代码:
$arr = json_decode($_POST["dump"], true); <= UPDATED
$col1 = $arr[0];
$col2 = $arr[1];
$col3 = $arr[2];
$col4 = $arr[3];
要按照其他说法进行标准化,您需要两张桌子。 以下只是一个例子。
表架构:
CREATE TABLE example(
id INT NOT NULL auto_increment,
primary key(id)
);
CREATE TABLE dumps(
id INT NOT NULL auto_increment,
example_id INT NOT NULL,
dump_value NUMERIC(5,2),
PRIMARY KEY(id),
INDEX(example_id),
);
通过$_POST
ed数据插入:
$arr = json_decode($_POST["dump"], true);
for ($cnt = 0; $cnt < count($arr); ++cnt)
{
$insert_query = "INSERT INTO dumps (dump_values) VALUES(".$arr[$cnt].")";
}
答案 2 :(得分:0)
你可以采取许多可能的方法。让我列出一些常见的方法
规范化数据:这意味着您将有两个表用于保存主键,第二个表用于将ID作为一行保存到数组中的每个元素。 专业:数据结构更好,元素搜索更好 Con:数据的逻辑验证更难实现(因为插入数组的组合是唯一的)
插入序列化:您可以在php中使用serialize
和unserialize
函数。因此,您仍然可以在db中获取将维护数据类型的数据
Pro:适合php环境并维护数据类型
Con:搜索速度很慢,因为索引在这里不起作用。不适用于从其他语言(如Java
JSON编码:这是当前的趋势,如果您没有搜索选项,则使用DB中的json编码文本。 json由大多数语言编写得很好并且很紧凑。 Pro:您可以在大多数语言中进行编码和解码 Con:搜索速度很慢,因为索引不会有帮助。
根据您的要求和平台,您需要评估并决定格式。 var_dump
不是我建议的东西