用于特定插入的数据类型

时间:2013-11-17 13:08:12

标签: php mysql types

我有一个包含一些元素的数组:

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在这种情况下只返回错误

3 个答案:

答案 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)

你可以采取许多可能的方法。让我列出一些常见的方法

  1. 规范化数据:这意味着您将有两个表用于保存主键,第二个表用于将ID作为一行保存到数组中的每个元素。 专业:数据结构更好,元素搜索更好 Con:数据的逻辑验证更难实现(因为插入数组的组合是唯一的)

  2. 插入序列化:您可以在php中使用serializeunserialize函数。因此,您仍然可以在db中获取将维护数据类型的数据 Pro:适合php环境并维护数据类型 Con:搜索速度很慢,因为索引在这里不起作用。不适用于从其他语言(如Java

  3. )读取数据的地方
  4. JSON编码:这是当前的趋势,如果您没有搜索选项,则使用DB中的json编码文本。 json由大多数语言编写得很好并且很紧凑。 Pro:您可以在大多数语言中进行编码和解码 Con:搜索速度很慢,因为索引不会有帮助。

  5. 根据您的要求和平台,您需要评估并决定格式。 var_dump不是我建议的东西