我有一个包含我想要输入数据库的值的数组。我的数据库结构如下:
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')
答案 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));
}
感觉不是很漂亮,但它确实有效。