No olvides que en las ciencias cualquier problema casi siempere puede tener diversas resoluciones, no obstante nosotros aquí te enseñamos lo más óptimo y mejor.
Solución:
No puede insertar un array directamente a mysql como mysql no entiende PHP tipos de datos.mysql solo entiende sql. Así que para insertar un array en una base de datos MySQL, debe convertirla en una declaración SQL. Esto se puede hacer manualmente o por una biblioteca. La salida debe ser un INSERT
declaración.
Actualización para PHP7
Desde PHP 5.5
mysql_real_escape_string
ha quedado en desuso y a partir de PHP7 ha sido remoto. Ver: documentación de php.net sobre el nuevo procedimiento.
Respuesta original:
Aquí hay una declaración de inserción estándar de MySQL.
INSERT INTO TABLE1(COLUMN1, COLUMN2, ....) VALUES (VALUE1, VALUE2..)
Si tu tener una mesa con nombre fbdata
con las columnas que se presentan en el keys de tu array puede insertar con este pequeño fragmento. Así es como su array se convierte en esta declaración.
$columns = implode(", ",array_keys($insData));
$escaped_values = array_map('mysql_real_escape_string', array_values($insData));
$values = implode(", ", $escaped_values);
$sql = "INSERT INTO `fbdata`($columns) VALUES ($values)";
Hay varias formas diferentes… Le daré un ejemplo de uno que usa declaraciones preparadas:
$prep = array();
foreach($insData as $k => $v )
$prep[':'.$k] = $v;
$sth = $db->prepare("INSERT INTO table ( " . implode(', ',array_keys($insData)) . ") VALUES (" . implode(', ',array_keys($prep)) . ")");
$res = $sth->execute($prep);
Estoy haciendo trampa aquí y asumiendo el keys en tu primera array son los nombres de columna en la tabla SQL. También asumo que tienes PDO disponible. Se puede encontrar más en http://php.net/manual/en/book.pdo.php
Aquí está mi solución completa a esto basada en la respuesta aceptada.
Ejemplo de uso:
include("./assets/php/db.php");
$data = array('field1' => 'data1', 'field2'=> 'data2');
insertArr("databaseName.tableName", $data);
db.php
get_link());
*/
class database
protected $databaseLink;
function __construct()
include "dbSettings.php";
$this->database = $dbInfo['host'];
$this->mysql_user = $dbInfo['user'];
$this->mysql_pass = $dbInfo['pass'];
$this->openConnection();
return $this->get_link();
function openConnection()
$this->databaseLink = mysql_connect($this->database, $this->mysql_user, $this->mysql_pass);
function get_link()
return $this->databaseLink;
/**
* Insert an associative array into a MySQL database
*
* @example
* $data = array('field1' => 'data1', 'field2'=> 'data2');
* insertArr("databaseName.tableName", $data);
*/
function insertArr($tableName, $insData)
$db = new database();
$columns = implode(", ",array_keys($insData));
$escaped_values = array_map('mysql_real_escape_string', array_values($insData));
foreach ($escaped_values as $idx=>$data) $escaped_values[$idx] = "'".$data."'";
$values = implode(", ", $escaped_values);
$query = "INSERT INTO $tableName ($columns) VALUES ($values)";
mysql_query($query) or die(mysql_error());
mysql_close($db->get_link());
?>
dbSettings.php
"localhost",
'user' => "root",
'pass' => "password"
);
?>
valoraciones y reseñas
No se te olvide difundir este post si te fue de ayuda.