我有一张包含10,000条记录的表(客户)。我想一次修改一个记录,修改一些数据然后再更新回数据库。 SELECT * FROM customer然后fetchAll是没有意义的,因为有10,000条记录。
我想在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
}
有办法做到这一点吗?
答案 0 :(得分:2)
你可以使用偏移量,限制MySQL中可用的语法......但这似乎是一件奇怪的事情
SELECT * FROM customer LIMIT $row, 1
假设$row
从0开始并自动递增(如您的示例中所示)。您可能还需要订购它。
答案 1 :(得分:2)
您不必使用fetchAll,您知道:
$stmt = $pdo->query("SELECT * FROM `table`");
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
//Do stuff with specific rows one a time
}
此将比拥有10,000个选择查询快得多。我可以向你保证。
答案 2 :(得分:0)
您无需致电fetchAll()
并抓取所有行,只需使用fetch()
从SELECT * FROM customer
查询中一次获取一行。
答案 3 :(得分:0)
根据您需要更新的内容,您可以使用SQL。例如,要找到并替换刺痛:
update TABLE_NAME set FIELD_NAME = replace(FIELD_NAME, ‘find this string’, ‘replace found string with this string’);