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

新手上路,请多包涵

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

 $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很陌生。

原文由 Liam 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 546
2 个回答

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

PHP7 更新

自 PHP 5.5 mysql_real_escape_string 已被弃用,自 PHP7 起已被 删除。请参阅: php.net 关于新程序的文档。


原答案:

这是一个标准的 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')";

原文由 Shiplu Mokaddim 发布,翻译遵循 CC BY-SA 4.0 许可协议

这基于答案 [https://stackoverflow.com/a/10054657/7404511]

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

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

如果您有一个名称为 fbdata 的表,其中列显示在数组的键中,您可以使用这个小片段插入。这是您的数组如何转换为该语句的方式。

我会使用此解决方案,其中明确添加引号 'string' 并明确将 null 用于空值:

 $columns = implode(", ",array_keys($insData));
$escaped_values = array_map(
    function($value) {
        if (is_string($value)) {
            return "'" . $mysqli->real_escape_string($value) . "'";
        }
        if (is_null($value)) {
            return 'null';
        }
        return $value;
    },
    array_values($insData)
);
$values  = implode(", ", $escaped_values);
$sql = "INSERT INTO `fbdata`($columns) VALUES ($values)";

原文由 Gherry 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题