Mysql Php使用transaction和commit一次选择并处理一条记录
从一个表中选择一系列ID然后放置它们的最佳方法是什么 通过事务循环一次更新一条记录Mysql Php使用transaction和commit一次选择并处理一条记录,php,mysql,Php,Mysql,从一个表中选择一系列ID然后放置它们的最佳方法是什么 通过事务循环一次更新一条记录 $result = mysql_query('SELECT p_code FROM replenishment '); $ids = array(); while ($p_code = mysql_fetch_row($result)) { $ids[] = $p_code[0]; foreach($ids as $p_code) { mysql_query('SELECT @A
$result = mysql_query('SELECT p_code FROM replenishment ');
$ids = array();
while ($p_code = mysql_fetch_row($result)) {
$ids[] = $p_code[0];
foreach($ids as $p_code) {
mysql_query('SELECT @A:=replenishment.p_code,@B:=replenishment.model
from replenishment
left join replenishment1 on replenishment1.p_code = replenishment.p_code
where replenishment.branch=10
and replenishment.p_code=$p_code
and replenishment.stock < min
and replenishment1.stock > 0
group by replenishment.p_code');
mysql_query('UPDATE replenishment1
SET stock = (stock - @B), B5=(b5+@B) WHERE @A = replenishment1.p_code
and replenishment1.stock >= @B');
$row = mysql_fetch_assoc();
}
}
$result=mysql\u查询('从补货中选择p\u代码');
$ids=array();
while($p\u code=mysql\u fetch\u row($result)){
$ids[]=$p_代码[0];
foreach($ID作为$p_代码){
mysql\u query('选择@A:=补货.p\u代码,@B:=补货.model
来自补给
左联合补货1上的补货1.p_代码=补货.p_代码
其中,补货分支=10
和补货。p_代码=$p_代码
和补货。库存0
按补给分组。p_代码“);
mysql\u查询('更新补充1
设置库存=(库存-@B),B5=(B5+@B),其中@A=补充1.p_代码
和补充1.库存>=@B');
$row=mysql_fetch_assoc();
}
}
开始使用PDO或MySQLi。
通过它,您可以管理事务,并确保数据安全地进入数据库
<?php
try {
$dbh = new PDO('odbc:SAMPLE', 'db2inst1', 'ibmdb2',
array(PDO::ATTR_PERSISTENT => true));
} catch (Exception $e) {
die("Unable to connect: " . $e->getMessage());
}
try {
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->beginTransaction();
/* You can put your foreach loop over here or you can also do the entire process for single update. It's your choice */
$dbh->commit();
} catch (Exception $e) {
$dbh->rollBack();
echo "Failed: " . $e->getMessage();
}
?>
。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果选择PDO,。则不需要setAttribute函数,也不需要beginTransaction方法或提交函数。