I have an array containing values I want to enter into a database. My database is structured like so:
1 string value, 7 int values, 5 float values, 1 string value.
The data I want to pass to the database is in an array, with proper typing, $outputArr[]
I have tried using the following snippets with no success:
$escaped_values = array_map('mysqli_real_escape_string', array_values($outputArr));
$values = implode(", ", $escaped_values);
$query = "INSERT INTO table(columns) VALUES ($values)
(type)var_export($outputArr[$i]) for each element of $outputArr and
$query = INSERT INTO table(columns) VALUES ('$Opos0', $Opos1, $Opos2, ... , '$Opos13')
How can I pass my data into the database while maintaining proper data types?
Entire function as is now written:
$outputArr = array();
foreach($numArr as $k1 => $val){
foreach($val as $k2 => $val2){
$outputArr[$k2] = $numArr[$k1][$k2];
}
$Opos0 = serialize($connect->real_escape_string(var_export($outputArr[0])));
$Opos1 = serialize((int)var_export($outputArr[1]));
$Opos2 = serialize((int)var_export($outputArr[2]));
$Opos3 = serialize((int)var_export($outputArr[3]));
$Opos4 = serialize((int)var_export($outputArr[4]));
$Opos5 = serialize((int)var_export($outputArr[5]));
$Opos6 = serialize((int)var_export($outputArr[6]));
$Opos7 = serialize((int)var_export($outputArr[7]));
$Opos8 = serialize((float)var_export($outputArr[8]));
$Opos9 = serialize((float)var_export($outputArr[9]));
$Opos10 = serialize((float)var_export($outputArr[10]));
$Opos11 = serialize((float)var_export($outputArr[11]));
$Opos12 = serialize((float)var_export($outputArr[12]));
$Opos13 = serialize($connect->real_escape_string(var_export($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));
}
$k2 = 0;
} //Parse numArr info into INSERT command.`
mysql_functions. Use PDO or MySQLi and use prepared statements.MySQLiin the program. Thanks for pointing out the copy/paste typoif(!($result = mysqli->query($query))). My best guess would be incompatible data types between the PHP and database.mysqli->query($query)))do this:echo "<pre>", print_r( $query ), "</pre>"; die();and look at the results. There's probably missing data.