【问题标题】:is it possible to put that in a loop?有可能把它放在一个循环中吗?
【发布时间】:2013-04-07 00:56:34
【问题描述】:

有没有可能把它放在一个循环中?

if (!empty($_POST["textDE"])) {
    $mysqli = $connect->prepare("INSERT INTO `l10n-strings` (`translationID`, `languageCode`, `text`) VALUES (?, ?, ?)");
    $mysqli->bind_param('iss', $l10id, $languageCodeDE, $textDE);
    $mysqli->execute();
}

if (!empty($_POST["textEN"])) {
    $mysqli = $connect->prepare("INSERT INTO `l10n-strings` (`translationID`, `languageCode`, `text`) VALUES (?, ?, ?)");
    $mysqli->bind_param('iss', $l10id, $languageCodeEN, $textEN);
    $mysqli->execute();
}

if (!empty($_POST["textES"])) {
    $mysqli = $connect->prepare("INSERT INTO `l10n-strings` (`translationID`, `languageCode`, `text`) VALUES (?, ?, ?)");
    $mysqli->bind_param('iss', $l10id, $languageCodeES, $textES);
    $mysqli->execute();
}

if (!empty($_POST["textFR"])) {
    $mysqli = $connect->prepare("INSERT INTO `l10n-strings` (`translationID`, `languageCode`, `text`) VALUES (?, ?, ?)");
    $mysqli->bind_param('iss', $l10id, $languageCodeFR, $textFR);
    $mysqli->execute();
}

if (!empty($_POST["textIT"])) {
    $mysqli = $connect->prepare("INSERT INTO `l10n-strings` (`translationID`, `languageCode`, `text`) VALUES (?, ?, ?)");
    $mysqli->bind_param('iss', $l10id, $languageCodeIT, $textIT);
    $mysqli->execute();
}       

【问题讨论】:

    标签: php loops mysqli


    【解决方案1】:
    $languages = array('DE', 'EN', 'ES', 'FR', 'IT');
    
    foreach ($languages as $lang) {
        $langKey = 'text' . $lang;
        if (!empty($_POST[$langKey])) {
            $mysqli = $connect->prepare(
                "INSERT INTO `l10n-strings` (`translationID`, `languageCode`, `text`) ".
                "VALUES (?, ?, ?)"
            );
            $mysqli->bind_param(
                'iss',
                $l10id,
                ${'languageCode'.$lang},
                ${$langKey}
            );
            $mysqli->execute();
        }
    }
    

    Variable variables 使用查找数组使这更容易。

    还有disable register globals in your PHP configuration,这是一个安全问题。

    【讨论】:

    • @Bob:别担心,我们都必须从某个地方开始。 ;-)
    • @hakre:关于寄存器全局变量的注释是一个很好的补充,但是重构 $langKey 会使代码不匹配 OP(它们在 bind_param() 中没有引用 $_POST,除非你假设这是一个全球性的——虽然我不确定你为什么会在$_POST['var']$var 之间跳来跳去)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2015-09-03
    • 2021-12-13
    相关资源
    最近更新 更多