我做了一笔交易:
$dbh->beginTransaction();
$i = 0;
while ($i < $total_items_num) {
$insert_data->execute(
array( $item_data[ $i ],
$category,
$price,
)
);
$i++;
}
$dbh->commit();
在我的本地计算机上,项目按正确顺序插入,例如从1日到7日。但是在生产服务器上,它以相反的顺序插入,例如从7日到1日。
可能的原因是什么,我需要改变一些设置?
编辑:这是查询:
$insert_data = $dbh->prepare ("
INSERT INTO goods (
item_id,
item_data,
category,
price
)
VALUES (NULL, ?, ?, ?);
");
并且项目的顺序应该是从0到任何数字。例如。 0-6,0-15 ......
所以我想要的(以及对我来说当地有用的东西)是item_id(它是主键)以这种顺序应用于项目,例如如果第一项有item_id 1025,那么第二项应该有1026。
但是发生的事情是他们以相反的顺序插入。
感谢您的建议,如果问题含糊不清,抱歉,希望现在好一点。
答案 0 :(得分:1)
我建议您查看几件事:
您的开发和生产环境是否与相关的表格具有相同的索引?
如果没有,请检查两种情况下的验证查询是否完全相同。
如果在这两种情况下你的答案都是肯定的,那么规则就是其他评论指出的规则:除非你在查询中使用ORDER BY
,否则RDBMS在结果集中的表记录不一定是“有序的”。你设置了一些索引。
答案 1 :(得分:0)
SQL数据库没有行固有顺序的概念。仅当您在查询中明确指定ORDER BY
子句时才应用顺序。在没有ORDER BY
的情况下,允许数据库引擎以它选择的任何顺序返回行。
关于序列编号,您尚未显示如何定义表格或填充$item_data
的方式,因此此问题目前无法解决。