【发布时间】:2013-01-04 23:07:09
【问题描述】:
如果我这样做,我需要能够在执行查询之前检查数组的所有元素是否有效:
$arr = array(5, 3, 'test', 23, 9);
$query = $members->prepare("insert into mytable(a) values(:a)");
foreach ($arr as $val) {
if (is_int($val)) {
$query->execute(array(':a'=>$val));
}
}
如果数组中的所有值都是ints,我只想将它们插入数据库,但它会在数组中“测试”之前插入前两个值。这只是我弥补我遇到的问题的一个随机示例。
最好的方法是什么?
【问题讨论】:
-
在运行查询之前进行 int 检查。或者至少将整个事情包装在一个事务中,这样如果任何一个查询失败,您就可以回滚。
-
事务将是一种方式:在循环之前启动事务,然后在任何条目失败时回滚;或承诺成功;或在一个循环中验证,如果都通过验证,则在第二个循环中更新
-
您遇到的问题的“非随机”示例是什么?你从哪里得到你的数组?
-
遍历数组并检查元素。然后遍历数组并执行查询.....
-
@YourCommonSense:OP 创建这个抽象测试用例是正确的。希望我们能更频繁地看到它完成(即总是)
标签: php mysql error-handling pdo