【问题标题】:Zend Framework convert NULL string to actual NULL value for MySqlZend Framework 将 NULL 字符串转换为 MySql 的实际 NULL 值
【发布时间】:2011-01-09 03:39:56
【问题描述】:

不知何故,当使用带有 execute() 函数的多行插入将数据导入 mysql 时,有许多行为某些列添加了字符串 NULL。 如何将这些 NULL 字符串转换为 MySQL NULL 值,以便在显示数据时使用 php 中的 is_null() 检查空值。

如何避免这个问题?我对每条数据都使用了 quote() 函数。这是在空字段上使用引号的问题吗?我正在导入一个 csv 文件。

谢谢

【问题讨论】:

    标签: zend-framework null insert


    【解决方案1】:

    要插入 SQL NULL 或任何其他表达式,您可以使用 Zend_Db_Expr 对象。即使您使用quote(),ZF 也会通过不带引号的方式传递这些对象。

    $null = new Zend_Db_Expr("NULL");
    
    $table = new MyTable();
    $table->insert(123, "abc", $null);
    

    请注意,由于使用 Zend_Db_Expr 会绕过引用和参数化,因此您有责任防止 SQL 注入。


    这与您的问题无关,但如果您要批量加载 CSV 文件,请考虑 LOAD DATA INFILE。它甚至可以比使用多行 INSERT 快 20 倍。

    【讨论】:

    • 谢谢比尔。正是我想要的。因此,当迭代数据以进行插入时,我应该寻找空数据而不是使用 quote() 而是使用 new Zend_Db_Expr("NULL") 来获取空数据?我肯定会研究那个 LOAD_DATA_INFILE 函数。我想我可以将数据加载到临时表中,然后对其执行数据功能,然后将其删除。
    • 是的,您可以通过临时表进行一些后处理(顺便说一句,您不必删除临时表,因为当您的数据库连接关闭时它会消失)。您也可以使用LOAD DATA INFILE 的可选SET 子句进行一些有限的数据转换。请参阅文档。
    猜你喜欢
    • 2022-01-08
    • 1970-01-01
    • 2022-10-01
    • 2012-04-12
    • 2021-04-04
    • 1970-01-01
    • 2013-08-21
    • 2020-09-08
    • 2017-02-17
    相关资源
    最近更新 更多