- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
//lets get the auto name set
$accepted = 0;
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='no_name'");
$numrows = mysql_num_rows($sql);
//default name 1
if($numrows == 0){ $auto_name = 'no_name'; $accepted = 1;}
//default name 2
if ($accepted == 0){ $sql = mysql_query("SELECT * FROM ".TBL_FACTIONS."
WHERE f_name='no_name[02]'"); $numrows = mysql_num_rows($sql);
if($numrows == 0){$auto_name = 'no_name[02]'; $accepted = 1;} }
//default name 3
if ($accepted == 0){ $sql = mysql_query("SELECT * FROM ".TBL_FACTIONS."
WHERE f_name='no_name[03]'"); $numrows = mysql_num_rows($sql);
if($numrows == 0){$auto_name = 'no_name[03]'; $accepted = 1;} }
//default name 4
if ($accepted == 0){ $sql = mysql_query("SELECT * FROM ".TBL_FACTIONS."
WHERE f_name='no_name[04]'"); $numrows = mysql_num_rows($sql);
if($numrows == 0){$auto_name = 'no_name[04]'; $accepted = 1;} }
//default name 5
if ($accepted == 0){ $sql = mysql_query("SELECT * FROM ".TBL_FACTIONS."
WHERE f_name='no_name[05]'"); $numrows = mysql_num_rows($sql);
if($numrows == 0){$auto_name = 'no_name[05]'; $accepted = 1;} }
//default name 6
if ($accepted == 0){ $sql = mysql_query("SELECT * FROM ".TBL_FACTIONS."
WHERE f_name='no_name[06]'"); $numrows = mysql_num_rows($sql);
if($numrows == 0){$auto_name = 'no_name[06]'; $accepted = 1;} }
//-->update faction table
mysql_query("INSERT INTO ".TBL_FACTIONS." (f_id, f_name, f_status,
f_boss, f_uboss, f_rhm, f_lhm, f_r1, f_r2, f_nat,
f_funds, f_fmj, f_score,f_footer)
VALUES ('','$auto_name','0','$username','','','','','','gb','0','0','0','')");
这会检查我的 MySQL 数据库,为表中创建的行创建自动名称。像这样工作得很好,但我认为必须有一种更简单、更有效的方法来实现相同的输出?
<小时/>另外,如何添加一个常量循环,以便它始终创建一个 no_name[XX] 插入?
最佳答案
首先,您可以删除已接受的检查,方法是将其替换为用于设置值的反向检查,并将 sql 语句中使用的值替换为 if($ numrows == 0)
之后。
请记住,再次设置变量将覆盖其之前的值。
此外,我在第一个语句周围放置了一个 if(TRUE)
条件。
//lets get the auto name set
if (TRUE) {
$auto_name = 'no_name';
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='".$auto_name."'");
$numrows = mysql_num_rows($sql);
}
//default name 2
if ($numrows != 0) {
$auto_name = 'no_name[02]';
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='".$auto_name."'");
$numrows = mysql_num_rows($sql);
}
//default name 3
if ($numrows != 0) {
$auto_name = 'no_name[03]';
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='".$auto_name."'");
$numrows = mysql_num_rows($sql);
}
//default name 4
if ($numrows != 0) {
$auto_name = 'no_name[04]';
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='".$auto_name."'");
$numrows = mysql_num_rows($sql);
}
//default name 5
if ($numrows != 0) {
$auto_name = 'no_name[05]';
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='".$auto_name."'");
$numrows = mysql_num_rows($sql);
}
//default name 6
if ($numrows != 0) {
$auto_name = 'no_name[06]';
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='".$auto_name."'");
$numrows = mysql_num_rows($sql);
}
//-->update faction table
mysql_query("INSERT INTO ".TBL_FACTIONS." (f_id, f_name, f_status, f_boss, f_uboss, f_rhm, f_lhm, f_r1, f_r2, f_nat, f_funds, f_fmj, f_score,f_footer) VALUES ('','$auto_name','0','$username','','','','','','gb','0','0','0','')");
您现在可能会注意到,除了 $auto_name = 'no_name';
行之外,每个 block 都具有相同的代码,这些行仅在数字区域有所不同,并且第一个 block 始终运行,这使其非常适合 do{}while()
循环。
$numeric_part = ''; // numeric part is empty for the first time
$i = 1 // which name are we're checking
do {
$auto_name = 'no_name'.$numeric_part;
$sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE f_name='".$auto_name."'");
$numrows = mysql_num_rows($sql);
//prepare for the next round trough the loop
$i++;
$numeric_part = '['.$i.']';
} while ($numrows != 0);
//-->update faction table
mysql_query("INSERT INTO ".TBL_FACTIONS." (f_id, f_name, f_status, f_boss, f_uboss, f_rhm, f_lhm, f_r1, f_r2, f_nat, f_funds, f_fmj, f_score,f_footer) VALUES ('','$auto_name','0','$username','','','','','','gb','0','0','0','')");
(请注意,此代码中存在细微差别,它使用 $noname[X] 表示条目 0-9,使用 $noname[XX] 表示条目 10-99,使用 $noname[XXX] 表示条目 10-99条目 100-999 等等,如果您希望有所不同,则需要更改 $numeric_part = '['.$i.']';
行)
这仍然不是很有效,因为这仍然会总共访问您的数据库 5000 次,仅输入 100 个条目,并且总共会访问您的数据库 500000(50 万)次,以输入 1000 (1K) 个条目,其中最后一个查询访问数据库 1000 (1K) 次。
(您的主机/您的计算机 不会喜欢这个 )
更有效的继续方法是将条目简单地添加到末尾,并忽略之间的空条目(您现在正在重用它们。)
忽略之间的空条目只需允许 f_name
字段为 NULL 条目,并在输出中将这些条目替换为基于 f_id
字段的值即可。
(我将编写最后一部分作为练习。)
关于PHP/MySQL搜索函数: there must be an easier way of achieving this?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3501389/
我有一个对象,其属性的计算成本很高,因此它们仅在第一次访问时计算然后缓存。 private List notes; public List Notes { get
我正在选择datetime列中具有特定日期的记录,但感觉有点草率,我想知道是否有更好的方法。我的查询如下所示: SELECT * FROM myTable WHERE event_d
我正在尝试改进编码,最近遇到了自定义异常(exception)和“比许可更容易请求宽恕”(EAFP)的概念,但在我看来,自定义异常(exception)仍然遵循该概念。 例如,在下面的代码中,A看起来
//lets get the auto name set $accepted = 0; $sql = mysql_query("SELECT * FROM ".TBL_FACTIONS." WHERE
我正在尝试编写一个程序来处理各种对象的检测。这些对象具有原点、宽度、高度和速度。有没有一种方法可以设置数据结构/算法,以便每个对象都不会与其他所有对象进行检查? 我试图避免的问题的一些示例代码: fo
前一段时间我有一个类似的问题,但对整个 IoC/DI 主题以及我想要实现的目标的了解要少得多,所以这里又来了.... 我正在构建一个供公司内部通用的库。公共(public) API 中最常用的部分已经
是否有一种更简单的方法来编写我的程序,以便我可以将基于图 block 的 map 绘制到面板(某种形式)上,这样每次调整窗口大小时(关闭可调整大小) map 都不会重新绘制?我意识到这对于调试和测试我
我有大约 10 个使用相同事件的文本框 - 然后我只是将 sender 转换为文本框并对文本进行任何更改。我很好奇,有没有更简单/更简洁的方法将这些事件分配给代码隐藏方法?现在,我只是通过将每个事件的
我正在尝试在 Java 中实现一个退出堆栈,它目前正在给我带来机会!哈哈 我已经走到这一步了,据我所知,我的逻辑是合理的,但它无法编译。我不断收到 java.lang.ArrayIndexOutOfB
最近我接手了一个用 C#/XAML 编写的 Windows 应用商店应用程序项目,其要求之一是, 将项目迁移到 Javascript/HTML5,并通过从我们的网站动态加载 javascript,我们
我需要有关方法、算法或工具的建议来满足我的需求; SQL 中的动态过滤。 我使用 PHP 作为后端。我在前端创建结果过滤,如下所示: 单击“确定”后,我使用以下方式发送 JSON 数据: JSON.s
在 Chrome 检查器中,是否有比以下更好的编辑实时 CSS 的方法: 必须在“元素”和“来源”选项卡之间来回切换 将检查器样式表中的内容复制/粘贴到您的真实样式表中 在文件和文件夹窗口中找到您真正
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。 关闭 7 年前。
我有一个 PhoneGap/Cordova 项目,这意味着我必须结合使用 JQuery 和 CSS 转换来实现动画(JQuery 动画在 iOS 上很笨重)。 我编写了一些实现一系列下拉菜单的代码,但
是否有更简单或更新的方法能够,例如,点击一个按钮并点击该按钮,重新路由到一个新路径? ....除了在组件上使用上下文方法之外? 谢谢 最佳答案 有几种方式: 1. withRouter - 来自 re
目前,我可以使用“在路径中查找”功能并键入 Artifact 的名称(或在 pom.xml 中搜索)来检查项目是否具有该依赖项,但这不适用于传递依赖项。 我可以在 IntelliJ(或命令行)中生成依
我有一个用 C# 编写的应用程序,该应用程序当前向 LDAP 进行身份验证。我们希望扩展功能以支持 IBM 的 Tivoli Access Manager,它由一个策略服务器和一个 LDAP 服务器(
假设我想根据同一字段中的值选择数据子集。现在我必须做这样的事情 TestLocationsResults = FILTER SalesData by (StoreId =='17' or StoreI
为什么“请求宽恕比获得许可更容易”(EAFP)被认为是 Python 中的良好实践?作为一名编程新手,我的印象是与使用其他检查相比,使用许多 try...except 例程会导致代码臃肿且可读性差。
这是一个与this fascinating question about detecting divide by zero exceptions at compile time相关的问题. 从 Eri
我是一名优秀的程序员,十分优秀!