在 RedBeanPHP 中使用 FOR 循环

Posted

技术标签:

【中文标题】在 RedBeanPHP 中使用 FOR 循环【英文标题】:Using a FOR loop with RedBeanPHP 【发布时间】:2011-12-11 03:49:31 【问题描述】:
// Includes rb.php here etc.
$mail_type = array('gmail.com', 'yahoo.com', 'yandex.ru', 'hotmail.com', 'live.no');

for ($i = 0; $i < 100; $i++)

    $mail = R::dispense('emails');
    $mail->id = $i;

    // Create random email
    $mail->email = strtolower(substr(base64_encode(mt_rand(99, 99999)), 0, -2)).'@'.$mail_type[mt_rand(0, 4)];

    R::store($mail);
    unset($mail); // This doesn't work either

尝试使用 RedBeanPHP 插入 100 封随机生成的不同电子邮件。出于某种原因,我无法让它工作,因为只有最后一个对象被插入到数据库中,有效地替换了最后一个。也找不到关于它的任何文档。有什么想法吗?

【问题讨论】:

【参考方案1】:

RedBeanPHP 认为它在您设置 id 后就已经存储了。解决方法是去掉 $mail->id = $id 字段。

【讨论】:

这是有道理的。如果没有指定 ID,R::store 只会插入一个新的自动递增行。谢谢。 在自动增量主索引上强制使用特定值只是询问竞争条件问题(另请参阅***.com/questions/5101487/…)【参考方案2】:

如果您说 $mail 正在使用电子邮件进行实例化,但没有存储到 R?我不确定 R 是什么,但如果它是一个对象数组,我可以进一步扩展。等待您的回复。

【讨论】:

R:: 是对 RedBeanPHP ORM 的静态引用。 R::Store 会将存储在$mail 变量中的对象保存到数据库中。 嗯,从您的解释来看,我认为您的代码看起来不错。您是否尝试在访问数据库之前打印出 for 循环的结果?如果它返回你想要的,那么问题出在数据库或你的 R 对象上。

以上是关于在 RedBeanPHP 中使用 FOR 循环的主要内容,如果未能解决你的问题,请参考以下文章

js中for循环和while循环在使用的时候有何区别?

在for循环中使用python next()而不推进for循环[重复]

python中for循环的用法

js中for循环和while循环在使用的时候有何区别?

如何在Django模板的内部for循环中使用外部for循环值

for循环和while循环的区别?