使用 PHP 将数组插入 MySQL 数据库

2022-08-30 11:04:52

我有以下数组要存储在我的数据库中...

$insData = array(
    'uid' => $fbme['id'],
    'first_name' => $fbme['first_name'],
    'last_name' => $fbme['last_name'],
    'email' => isset($fbme['email']) ? $fbme['email'] : '',
    'link' => $fbme['link'],
    'affiliations' => $networks,
    'birthday' => $info[0]['birthday_date'],
    'current_location' => isset($fbme['location']['name']) ? $fbme['location']['name'] : '',
    'education_history' => $education,
    'work' => $workInfo,
    'hometown_location' => isset($fbme['hometown']['name']) ? $fbme['hometown']['name'] : '',
    'interests' => $info[0]['interests'],
    'locale' => $info[0]['locale'],
    'movies' => $movies,
    'music' => $music,
    'political' => $info[0]['political'],
    'relationship_status' => $info[0]['relationship_status'],
    'sex' =>  isset($fbme['gender']) ? $fbme['gender'] : '',
    'tv' => $television,
    'status' => '0',
    'created' => $now,
    'updated' => $now,
);

我尝试搜索谷歌如何做到这一点,我所能找到的只是说明我的数组需要拆分的信息,然后再插入到表中。这是正确的吗?抱歉天真,对php很陌生。


答案 1

您不能将数组直接插入MySQL,因为MySQL不理解PHP数据类型。MySQL只理解SQL。因此,要将数组插入MySQL数据库,您必须将其转换为SQL语句。这可以手动完成,也可以由库完成。输出应为语句。INSERT

PHP7 更新

由于 PHP 5.5 已被弃用,从 PHP7 开始,它已被删除。参见:php.net 关于新过程的文档。mysql_real_escape_string


原答:

下面是一个标准的 MySQL 插入语句。

INSERT INTO TABLE1(COLUMN1, COLUMN2, ....) VALUES (VALUE1, VALUE2..)

如果您有一个名为 fbdata 的表,其中包含数组键中显示的列,则可以使用此小代码段插入。下面是将数组转换为此语句的方式。

$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)";

答案 2

有许多不同的方法...我将给你一个使用预准备语句的示例:

$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);

我在这里作弊,并假设您的第一个数组中的键是SQL表中的列名。我还假设你有可用的PDO。更多信息可以在 http://php.net/manual/en/book.pdo.php