PHP / MySQL:如何减少代码以回显选择结果(工作代码)
Posted
技术标签:
【中文标题】PHP / MySQL:如何减少代码以回显选择结果(工作代码)【英文标题】:PHP / MySQL: How to reduce code to echo Select results (working code) 【发布时间】:2015-09-01 11:04:22 【问题描述】:我是 php 和 mysql 的新手,希望你能在这方面帮助我一些技巧或 cmets。
我有一个带有表“Languages
”的 MySQL 数据库,我想从中获取所有数据,然后在我的页面上回显它,并在其周围添加一些 html 标记。
在下面的示例中,“ISO
”是语言代码,“$trans
”是语言名称的选定翻译,例如英语。
此处的输出是(自定义)复选框列表,每种语言都有一个复选框。
到目前为止,我有以下按预期工作的方法,但由于我是新手,所以我想知道我是否真的需要 While 循环,或者是否有 更短/更好的方法来获得相同的效果 - 最后我只需要回显我的 Select 的结果。
我的 PHP:
// select data from db
$tbl = "Languages";
$conn = new mysqli($servername, $username, $password, $dbname);
$conn->set_charset("utf8");
if($conn->connect_error)
die("Connection failed: " . $conn->connect_error);
$sql = "SELECT * FROM " . $tbl . " ORDER BY ISO ASC";
$result = $conn->query($sql);
// create array
while($arrLanguages = $result->fetch_assoc())
$languages[] = array("ISO" => $arrLanguages["ISO"], "trans" => $arrLanguages[$lang]);
$conn->close();
// echo results with some HTML tags
$i = 1;
foreach($languages as $language)
echo "<input type='checkbox' class='checkSingle' id='language" . $i . "' name='language' value='" . $language['ISO'] . " - " . $language["trans"] . "' />";
echo "<label for='language" . $i . "'>" . $language['ISO'] . "</label>";
$i++;
【问题讨论】:
我觉得还不错! 在这里codereview.stackexchange.com 发布您的问题。 *** 是为了解决问题,而不是为了代码审查 那么不要做select *
。永远不要吸进你不会使用的领域。只要有select ISO, trans
,然后是$languages[] = $arrLanguages
。
@marijnz0r:感谢您的反馈! :)
@MarcB:非常感谢 - 这太棒了!肯定会申请。 :) 如果您将其发布为答案,那么我会接受。
【参考方案1】:
如果您不打算使用表中的所有字段,请不要使用select *
。请求稍后会被丢弃的字段是浪费带宽/cpu 周期。
$sql = "SELECT ISO, trans ...";
... execute ...
while($arrLanguages = ...)
$languages[] = $arrLanguages;
由于您只选择了您真正想要的两个字段,$arrLanguages
将只包含这些字段,并且您在完整的数组创建中没有类型。这是由fetch_assoc()
调用自动完成的。
【讨论】:
再次感谢 Marc - 我会尽快接受您的建议。 :)以上是关于PHP / MySQL:如何减少代码以回显选择结果(工作代码)的主要内容,如果未能解决你的问题,请参考以下文章