问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

zend framework的插入时,使用数组的问题

发布网友 发布时间:2022-11-23 16:59

我来回答

1个回答

热心网友 时间:2024-11-15 13:57

/**
* Inserts a new row.
*
* @param array $data Column-value pairs.
* @return mixed The primary key of the row inserted.
*/
public function insert(array $data)
{
$this->_setupPrimaryKey();

/**
* Zend_Db_Table assumes that if you have a compound primary key
* and one of the columns in the key uses a sequence,
* it's the _first_ column in the compound key.
*/
$primary = (array) $this->_primary;
$pkIdentity = $primary[(int)$this->_identity];

/**
* If this table uses a database sequence object and the data does not
* specify a value, then get the next ID from the sequence and add it
* to the row. We assume that only the first column in a compound
* primary key takes a value from a sequence.
*/
if (is_string($this->_sequence) && !isset($data[$pkIdentity])) {
$data[$pkIdentity] = $this->_db->nextSequenceId($this->_sequence);
$pkSuppliedBySequence = true;
}

/**
* If the primary key can be generated automatically, and no value was
* specified in the user-supplied data, then omit it from the tuple.
*
* Note: this checks for sensible values in the supplied primary key
* position of the data. The following values are considered empty:
* null, false, true, '', array()
*/
if (!isset($pkSuppliedBySequence) && array_key_exists($pkIdentity, $data)) {
if ($data[$pkIdentity] === null // null
|| $data[$pkIdentity] === '' // empty string
|| is_bool($data[$pkIdentity]) // boolean
|| (is_array($data[$pkIdentity]) && empty($data[$pkIdentity]))) { // empty array
unset($data[$pkIdentity]);
}
}

/**
* INSERT the new row.
*/
$tableSpec = ($this->_schema ? $this->_schema . '.' : '') . $this->_name;
$this->_db->insert($tableSpec, $data);

/**
* Fetch the most recent ID generated by an auto-increment
* or IDENTITY column, unless the user has specified a value,
* overriding the auto-increment mechanism.
*/
if ($this->_sequence === true && !isset($data[$pkIdentity])) {
$data[$pkIdentity] = $this->_db->lastInsertId();
}

/**
* Return the primary key value if the PK is a single column,
* else return an associative array of the PK column/value pairs.
*/
$pkData = array_intersect_key($data, array_flip($primary));
if (count($primary) == 1) {
reset($pkData);
return current($pkData);
}

return $pkData;
}追问我貌似没看到将$data 转换的函数呀~~~~
$data = array(
'noble_title' => 'King',
'first_name' => 'Arthur',
)
转换成 'noble_title="king" and first_name="Arthur"';

追答if (!isset($pkSuppliedBySequence) && array_key_exists($pkIdentity, $data)) {
if ($data[$pkIdentity] === null // null
|| $data[$pkIdentity] === '' // empty string
|| is_bool($data[$pkIdentity]) // boolean
|| (is_array($data[$pkIdentity]) && empty($data[$pkIdentity]))) { // empty array
unset($data[$pkIdentity]);
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 黑龙江债权转让合同纠纷该怎样取证 安徽债权转让合同纠纷应该怎么样取证 房产官司律师费多少 怎么卸载360手机助手 双钢化中空玻璃窗贴隔音膜有没有隔音效果? 信用卡借了18000日息百分之五是多少 唯品会买的都是假货次品怎么办呢?知道吗? 唯品会买到假货化妆品怎么办? 伤肾药物有那些? “儿童发烧服用美林会损伤肾脏”,这个说法是真的吗? “儿童发烧服用美林会损伤肾脏”,这句话有科学依据吗? 4类药物偷偷伤肾要注意 哪些药能影响儿童的健康 儿童不能吃的药 警惕最伤小儿肾脏的4种药物 请问一下,去南充要经过重庆吗? 南充现在究竟是属于重庆还是四川? 四川会把南充划给重庆吗 南充属于重庆吗 在天津办理北京移动卡怎么办理 我是移动的手机号,想在网上充值,有打折的网站吗?必须是安全的,谁在网上... 我是天津的,想买大众卡或津门通,去哪里买可以选号? 美图手机一直显示meitu还一直震动开不了机也强制不了重启 如何预防感冒 流行性感冒3大误区 谁知道如何预防感冒 c语言中宏名是什么类型 冬天天竺葵的养殖方法 天竺葵在北京冬天怎么养 天竺葵在北京冬天养法 手机摔了以后有没有可能前置后面的后置摄像头都坏了? 风狂点点消,怎么签到? 疯狂点点消怎么升级 苹果6淘宝中的拍立淘在哪 书法对联春归花不落风静月长明 Redis5设计与源码分析.pdf Hash分区 今日头条自助建站怎么改标题 现在人民币和港币的汇率是多少?和澳门元的汇率是多少? 长歌门历史真的存在么 郇字的组词 怎么样能卸掉聚合网络电视, 前挡玻璃内膜有细微划痕怎么办 挡风玻璃内膜有划痕怎么办? 给安徒生爷爷做名片怎么做