插入到表中存在的列上

2024-03-10

假设我有一个非常大的用户信息数组:

$user=array(
"name"=>"john",
"ip"=>"xx.xx.xx.xx",
"email"=>"[email protected] /cdn-cgi/l/email-protection",
//lots more values
)

我们还假设这些信息需要进入多个表。例如一个username需要去餐桌users, address需要进入details桌子等

现在,我使用某个自制函数插入到匹配的表中列名的数组键 and 数组值到正在输入的值。与此类似的东西:

function insert_sql($table, arr $values){
    GLOBAL $dbc;
    $sql="INSERT INTO `$table` (".implode(array_keys($values), ", ").") VALUES (".implode(array_values($values), ", ").")";
    $dbc->prepare($sql)->execute();
    return $dbc->lastInsertId();

}
//I don't actually use this function, just trying to show you what is being accomplished.

问题是我的函数使用所有的钥匙 and 所有的值,所以当我只需要将数组的某些部分放入多个表中时,它不起作用。

问题是:

如果列不存在,如何使 INSERT 语句忽略该列?所以如果我插入name,email,address, 入表users,但该表没有地址列,我需要它来插入包含姓名和电子邮件的行,但只是忽略地址列不存在的事实。

编辑:另一个选项是使用表的列创建一个数组,并用它来过滤值数组。虽然我不太确定如何设置它。


查找给定的表列名称:

SELECT 
column_name
FROM 
information_schema.columns
WHERE 
table_name =  'tablename'

然后将您的密钥列入白名单$values array

Example:

function insert_sql($table, array $values){
        global $connection;
        $query = "SELECT column_name FROM information_schema.columns WHERE table_name =  :tablename";
        /* @var $stmt PDOStatement */
        $stmt  = $connection->prepare($query);
        $stmt->execute(array(
            'tablename' => $table
        ));
        $columns = array_flip($stmt->fetchAll(PDO::FETCH_COLUMN, 0));
        $values  = array_intersect_key($values, $columns);
        var_dump($values);
    }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

插入到表中存在的列上 的相关文章

  • 未传递“client_reference_id”参数

    我使用 Stripe Checkout Stripe 版本 2016 07 06 我想通过参数 client reference id 恢复个性化数据 但在 JSON 中 当我有金额或电子邮件时 我找不到它 我是在测试环境中 你能帮我吗 先
  • 编辑 HTACCESS 文件以防止直接访问特定文件夹中的特定文件

    我试图阻止直接访问子文件夹中的特定文件 我意识到这个论坛上有很多描述类似问题的主题 但是 我的似乎有点尴尬 由于我已经存在 HTACCESS 文件 这是文件的文件路径 www example com PRINCIPAL PROJECTS m
  • 如何从 MySQL 数据查询创建 XML 文件?

    我想知道一种仅使用 MySQL 查询创建 XML 文件的方法 根本不使用任何脚本语言 有关于这个主题的书籍 教程吗 UPDATE 我想澄清一下 我想使用 sql 查询将 XML 数据转发到 php 脚本 Here s 关于从 MySQL S
  • PostgreSQL函数中sql语言和plpgsql语言的区别

    我很新数据库开发所以我对下面的例子有一些疑问 函数 f1 语言 SQL create or replace function f1 istr varchar returns text as select hello varchar istr
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • 如何将我的 init 函数中的代码集中到所有控制器中?

    public function init this gt view gt user Zend Auth getInstance gt getIdentity this gt view gt siteName Zend Registry ge
  • 如何在 SQL Server 2012 中选择除一列之外的所有列? [复制]

    这个问题在这里已经有答案了 有没有一种方法可以选择所有列 但只选择我不想选择的特定列 我的意思是有时我会遇到这样的问题 表有数百个字段 而我只需要删除一个字段 我需要重写所有列吗 有什么窍门吗 喜欢select
  • 使用 Instagram Basic Display API 时出现“无效平台应用程序”错误

    我正在尝试使用 Instagram Basic 显示 API 但是当我发布授权代码以获取访问令牌时 我不断收到以下错误 error type OAuthException 代码 400 error message 平台应用无效 我正在遵循此
  • MySQL如何获取unix时间戳的时间差

    我有一个保存值1506947452的变量 需要使用公式从该日期提取分钟 started data now date 但started date采用unix时间戳格式10位int数字 我以ajax形式收到并需要放入mysql查询i试试这个 S
  • 在 MySQL 数据库中保持 TEXT 字段唯一的最佳方法

    我想让 TEXT 字段的值在我的 MySQL 表中唯一 经过小型研究 我发现由于性能问题 每个人都不鼓励在 TEXT 字段上使用 UNIQUE INDEX 我现在想用的是 1 创建另一个字段来包含 TEXT 值的哈希值 md5 text v
  • 如何通过php获取网页的Open Graph协议?

    PHP 有一个简单的命令来获取网页的元标记 get meta tags 但这仅适用于具有名称属性的元标记 然而 开放图谱协议如今变得越来越流行 从网页获取 opg 值的最简单方法是什么 例如 我看到的基本方法是通过 cURL 获取页面并使用
  • Ebay api GetSellerList,解析响应 XML

    我正在使用 eBay 交易 api 来获取当前列出的卖家股票 我正在使用 GetSellerList 调用 我在解析 xml 时遇到问题 然后将其插入到网站商店中 这是 xml 请求
  • Codeigniter - 出现 404 Not Found 错误

    我们在 godaddy 有两个托管套餐 我们的实时网站使用以下 htaccess 文件运行良好 无需在 url 中使用 index php 即可访问网站 RewriteEngine On RewriteCond REQUEST FILENA
  • WordPress 自定义帖子类型未显示在搜索结果中

    我在 WordPress 中遇到自定义帖子类型 测验 和搜索的问题 自定义帖子类型未显示在我的搜索结果页面中 我的搜索结果中仅显示默认的帖子内容 以下是我使用的代码 函数 php函数create posttype register post
  • 使用函数的 SQL 查询 - 如何获取列表的最大计数

    如何查询 MAXIMUM COUNT 交易次数 我的代码如下 SELECT customer id COUNT customer id FROM rental GROUP BY customer id HAVING MAX COUNT cu
  • 从所有会话中注销

    我有一个注销选项 这是我的代码 session start session destroy setcookie key time 60 60 24 setcookie username time 60 60 24 我想添加另一个选项来注销所
  • 选择获取与 MySQL Group 中 max 对应的整行

    当我使用Max使用后查找特定 MySQL 组中字段的最大值GROUP BY 是否可以获取包含最大值的整行 我在处理一些论坛代码时偶然发现了这个线程 我想获取每个线程的最新帖子并将其显示在特定板的线程列表中 Quassnoi上面的回答对我非常
  • 如何使用 php 在 sql 查询中转义引号?

    我有一个疑问 sql SELECT CustomerID FROM tblCustomer WHERE EmailAddress addslashes POST username AND Password addslashes POST p
  • PHP递归遍历对象树[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • ZF3/2 - 如何捕获 EVENT_DISPATCH 侦听器中引发的异常?

    有什么方法可以在 EVENT DISPATCH 监听器中抛出异常吗 class Module public function onBootstrap EventInterface event application event gt get

随机推荐