- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试优化我的这张支票。我需要检查名为 lines 的表,看看是否有任何行具有匹配的 Earned 和 Maxearned 值(只有位置为 1、2、3、4 的行)。如果他们这样做,我需要从该行中获取 Earned,将其写入另一个名为 bank 的表中,然后从名为 lines 的表中删除该行。这是我的:
$sql3 = "SELECT * FROM `lines` WHERE Position <= 4 AND Linenum = '$linenum' AND Earned = Maxearned";
$result3 = mysql_query($sql3);
if (mysql_num_rows($result3) != 0)
{
while ($row3 = mysql_fetch_array($result3))
{
$users[] = $row3['User'];
}
foreach ($users as $user)
{
$sql6 = "SELECT * FROM `lines` WHERE Position <= 4 AND Linenum = '$linenum' AND Earned = Maxearned AND User = '$user'";
$result4 = mysql_query($sql6);
while ($row4 = mysql_fetch_array($result4))
{
$earned = $row4['Earned'];
}
$today = date("Y-m-d");
$method = "Queue money";
$type = "Earned";
$status = "Completed";
$sql4 = "INSERT INTO bank (User,Amount,Method,Transdate,Type,Status) VALUES ('$user','$earned','$method','$today','$type','$status')";
$sql5 = "DELETE FROM `lines` WHERE Position <= 4 AND Linenum = '$linenum' AND Earned = Maxearned AND User = '$user'";
}
$sql7 = "UPDATE `lines` SET Position = Position - 1 WHERE Linenum = '$linenum'";
}
我试图避免必须运行不同的查询($sql6 和之后的一段时间)来获取 Earned 列的值。有没有办法做到这一点?我已经尝试了一切,这几乎是我想到的最好的。
最佳答案
你可以这样做:
mysql_query("SET AUTOCOMMIT=0");
mysql_query("START TRANSACTION");
$sql3 = "SELECT * FROM `lines` WHERE Position <= 4 AND Linenum = '$linenum' AND Earned = Maxearned";
$result3 = mysql_query($sql3);
if (mysql_num_rows($result3) != 0)
{
while ($row3 = mysql_fetch_array($result3))
{
$users[] = $row3['User'];
}
$users_to_compare = "(" . rtrim(implode(",", $users),',') . ")";
$sql4 = "SELECT * FROM `lines` WHERE Position <= 4 AND Linenum = '$linenum' AND Earned = Maxearned AND User IN $users_to_compare";
$result4 = mysql_query($sql4);
while ($row4 = mysql_fetch_array($result4))
{
$earned = $row4['Earned'];
$today = date("Y-m-d");
$method = "Queue money";
$type = "Earned";
$status = "Completed";
$sql5 = "INSERT INTO bank (User,Amount,Method,Transdate,Type,Status) VALUES ('{$row4['User']}','$earned','$method','$today','$type','$status')";
$result5 = mysql_query($sql5);
}
$sql6 = "DELETE FROM `lines` WHERE Position <= 4 AND Linenum = '$linenum' AND Earned = Maxearned AND User IN $users_to_compare";
$result6 = mysql_query($sql6);
$sql7 = "UPDATE `lines` SET Position = Position - 1 WHERE Linenum = '$linenum'";
$result7 = mysql_query($sql7);
if ($result5 && $result5 && $result7) {
mysql_query("COMMIT");
} else {
mysql_query("ROLLBACK");
}
}
更进一步,您还可以使用Batch INSERT
来插入查询
注意:不要忘记 mysql_* 版本已弃用,您应该使用 mysqli_*
关于PHP 优化支票,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19554882/
我想在我的网站中集成 Paypal 。但我的要求是,我不希望我的客户进入 Paypal 网站付款。 (我知道这不是一种安全的方式,但这是我的要求)有没有一种方法可以让我在后端使用 Paypal API
我将简单值(基本数据类型)存储到散列中,并且在避免影响原始对象(如快照)之前对该值调用 dup。我不希望在立即值的情况下执行 dup 操作,并且只想按原样存储它。是否可以确定对象/值是否立即? 即(1
我正在尝试从 Java 小程序打印自定义纸张尺寸。我已经设置了纸张尺寸,但它被忽略了。 我也尝试过使用 book 方法,因为我看到了一些关于这有助于让它工作的东西但是当我使用它时它只是打印一个空白页并
我需要为我正在处理的 .Net C# 项目创建一个 Check 21/Image Cash Letter(X9.37-2003),但我做这件事时遇到了麻烦。有谁知道我在哪里可以获得一些示例代码或库或其
我是一名优秀的程序员,十分优秀!