我有一个包含10000条记录的表(客户)。我想一次修改一条记录,修改一些数据,然后将其更新回数据库。从客户那里选择*FROM然后获取All是没有意义的,因为有10000条记录。
我想在PHP中创建一个while循环,它执行递增的SELECT语句,但如果没有稳定的主键可以很好地递增,那么像这样的SELECT语句会是什么样子?逻辑上while循环看起来像:
$row = 1;
while(Number_Rows_In_Table)
{
$record = $this->db->exec("SELECT * FROM customer WHERE ROW = $row");
$row++;
//Do something with the data then update it
}
有办法做到这一点吗?
您不必使用fetchAll您所知道的:
$stmt = $pdo->query("SELECT * FROM `table`");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//Do stuff with specific rows one a time
}
这将比10000个选择查询快得多。我可以向你保证。
您可以使用偏移量,限制MySQL中可用的语法。。。但做似乎是一件奇怪的事情
SELECT * FROM customer LIMIT $row, 1
假设$row
从0开始并自动递增(就像您的示例中一样)。你可能也得点它。
您不必调用fetchAll()
并获取所有行,只需使用fetch()
从SELECT * FROM customer
查询中一次获取一行即可。
根据需要更新的内容,您可能只需要使用SQL。例如,查找并替换刺痛:
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);