使用PHP从数组中将混合数据输入MySQL数据库

时间:2015-06-16 20:03:22

标签: php mysql

我有一个包含我想要输入数据库的值的数组。我的数据库结构如下:
    1个字符串值,7个int值,5个浮点值,1个字符串值 我想传递给数据库的数据是一个数组,正确输入$outputArr[]

我尝试使用以下代码段但没有成功:

$escaped_values = array_map('mysqli_real_escape_string', array_values($outputArr));
$values  = implode(", ", $escaped_values);
$query = "INSERT INTO table(columns) VALUES ($values) 
<{1}}和<{1}}的每个元素的

(type)var_export($outputArr[$i])     $outputArr

如何在维护正确的数据类型的同时将数据传递到数据库中?

现在编写的整个函数:

$query = INSERT INTO table(columns) VALUES ('$Opos0', $Opos1, $Opos2, ... , '$Opos13')

2 个答案:

答案 0 :(得分:1)

我会使用serialize函数并将结果存储为BLOB字段。您可以取消序列化以在获取时恢复数据。

答案 1 :(得分:0)

好的,终于能够查明错误并找出问题/问题的答案。

$Opos0 = $connect->real_escape_string($outputArr[0]);
$Opos1 = (int)($outputArr[1]);
$Opos2 = (int)($outputArr[2]);
$Opos3 = (int)($outputArr[3]);
$Opos4 = (int)($outputArr[4]);
$Opos5 = (int)($outputArr[5]);
$Opos6 = (int)($outputArr[6]);
$Opos7 = (int)($outputArr[7]);
$Opos8 = (float)($outputArr[8]);
$Opos9 = (float)($outputArr[9]);
$Opos10 = (float)($outputArr[10]);
$Opos11 = (float)($outputArr[11]);
$Opos12 = (float)($outputArr[12]);
$Opos13 = $connect->real_escape_string(($outputArr[13]));

$query = "INSERT INTO `num_data`(`CalledNum`, `NumCalls`, `uniqueCalls`, `dur1sec`, `dur30sec`, `dur60sec`, `dur90sec`, `dur120sec`, 
    `grossIncome`, `cogs`, `split`, `netIncome`, `nipuc`, `CallDate`) VALUES ('$Opos0', $Opos1, $Opos2, $Opos3, $Opos4, $Opos5, $Opos6, 
    $Opos7, $Opos8, $Opos9, $Opos10, $Opos11, $Opos12, '$Opos13')";
$result = $connect->query($query);
if($result == false){
    echo "<p>Error entering data into num_data!</p>";
    echo "<pre>", print_r( $query ), "</pre>";
    die(mysqli_error($connect));
}

感觉不是很漂亮,但它确实有效。