Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MySQL:如何减少代码以回显选择结果(工作代码)_Php_Mysql_Arrays_Loops_Select - Fatal编程技术网

PHP/MySQL:如何减少代码以回显选择结果(工作代码)

PHP/MySQL:如何减少代码以回显选择结果(工作代码),php,mysql,arrays,loops,select,Php,Mysql,Arrays,Loops,Select,我是PHP和MySQL新手,希望你能帮我提供一些技巧或评论 我有一个MySQL数据库,其中有一个表“Languages”,我想从中获取所有数据,然后在页面上用一些HTML标记对其进行回显 在下面的示例中,“ISO”是语言代码,“$trans”是语言名称的选定翻译,例如英语。 这里的输出是一个(自定义)复选框列表,其中包含每种语言的复选框 到目前为止,我有以下几点可以按预期工作,但由于我是新手,我想知道我是否真的需要这里的While循环,或者是否有一个更短/更好的方法来获得相同的-,最后我只需要回

我是PHP和MySQL新手,希望你能帮我提供一些技巧或评论

我有一个MySQL数据库,其中有一个表“
Languages
”,我想从中获取所有数据,然后在页面上用一些HTML标记对其进行回显

在下面的示例中,“
ISO
”是语言代码,“
$trans
”是语言名称的选定翻译,例如英语。 这里的输出是一个(自定义)复选框列表,其中包含每种语言的复选框

到目前为止,我有以下几点可以按预期工作,但由于我是新手,我想知道我是否真的需要这里的While循环,或者是否有一个更短/更好的方法来获得相同的-,最后我只需要回显我选择的结果

我的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++;
}
//从数据库中选择数据
$tbl=“语言”;
$conn=newmysqli($servername、$username、$password、$dbname);
$conn->set_字符集(“utf8”);
如果($conn->connect\u错误){
die(“连接失败:”.$conn->connect\U错误);
} 
$sql=“选择*FROM”$待定。“ISO ASC订购”;
$result=$conn->query($sql);
//创建数组
而($arrLanguages=$result->fetch_assoc()){
$languages[]=数组(“ISO”=>$arrLanguages[“ISO”],“trans”=>$arrLanguages[$lang]);
}
$conn->close();
//使用一些HTML标记回显结果
$i=1;
foreach($languages作为$language){
回声“;
echo“$language['ISO']”;
$i++;
}

如果您不打算使用表中的所有字段,请不要执行
选择*
。请求稍后将被丢弃的字段是对带宽/cpu周期的浪费

$sql = "SELECT ISO, trans ...";
... execute ...
while($arrLanguages = ...) {
   $languages[] = $arrLanguages;
}

由于您只选择了真正需要的两个字段,
$arrLanguages
将只包含这些字段,并且您在完整的数组创建中没有类型。这是由
fetch\u assoc()
调用自动完成的。

对我来说似乎很好!把你的问题贴在这里。stackoverflow用于解决问题,而不是用于CodeReviews不执行
选择*
,然后。永远不要在你不打算使用的田地里吮吸。只要让
选择ISO、trans
,然后
$languages[]=$arrLanguages
@marijnz0r:谢谢您的反馈!:)@马尔克:非常感谢,这太棒了!当然适用。:)如果您将其作为答案发布,我将接受。再次感谢您,马克-我将按照您的建议尽快接受。:)