gpt4 book ai didi

php - 使用 PHP foreach 循环时 MySQL 更新

转载 作者:行者123 更新时间:2023-11-29 10:39:19 24 4
gpt4 key购买 nike

我想连续更新MySQL数据库记录...

下面的代码用于使用 PDO 连接数据库并选择一个表,使用 foreach 循环从中提取数据,然后我希望能够更新每一行的状态基于提取的数据..

如何使用 PHP 和 MySQL 正确完成此操作,以便逐行提取和更新......

代码:

// Database connection
define('DBHOST','localhost');
define('DBUSER','username');
define('DBPASS','password');
define('DBNAME','database');
try {
//create PDO connection
$db = new PDO("mysql:host=".DBHOST.";dbname=".DBNAME, DBUSER, DBPASS);
$db->exec("set names utf8");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

} catch(PDOException $e) {
//show error
echo '<p>'.$e->getMessage().'</p>';
exit;
}


$sql = 'SELECT * FROM table';
foreach ($db->query($sql) as $row) {

$id = $row['id'];
$status= $row['status'];
echo $status;


if($status==1) {

//Update status
//$sql_update = "UPDATE table SET status=2 WHERE id=". $id ."";

}
}

我想更新状态为 1 到 2 的每个选定记录...

最佳答案

您实际上可以在一个查询中完成所有操作:

更新表 SET status=2 WHERE status=1

你想一一这样做有什么理由吗?如果是性能原因,您可以像这样限制批量查询:

更新表 SET status=2 WHERE status=1 LIMIT 100

如果您确实需要逐个循环它们,请将这段代码放入 if 语句中应该会有所帮助:

$updateSql = "UPDATE table SET status=2 WHERE id=:id";

// Prepare statement
$stmt = $db->prepare($updateSql);
$stmt->bindParam(":id", $id);

// execute the query
$stmt->execute();

不过,您应该通过将查询限制为 status = 1 的行并将其限制为您实际需要的数据来提高您的选择效率,因此您不需要执行 if 操作而只需在循环中运行我的代码片段直接:

SELECT id FROM table WHERE status = 1

关于php - 使用 PHP foreach 循环时 MySQL 更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45813721/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com