0

我正在使用以下代码从 MySQL 数据库中提取所有语言变量和值并填充表单以进行编辑:

function language() {

    $settings = array();
    $sql = "SELECT * FROM `languages`";
    $result = mysql_query($sql);
    // Mysql_num_row is counting table row
    while ($row = mysql_fetch_assoc($result)) {

        ?>

            <div style="float:left;width:250px;padding-left:15px"><label><?php echo $row['id'];?></label></div><div style="float:left;margin-left:0px;"><input type="text" name="<?php echo $row['id'];?>" value="<?php echo $row['value'];?>" /></div>

        <? php

    }
}

我有一个基本功能可以将上述表格中所做的更改保存回数据库,并使用任何更改进行更新:

function save_language() {

    $post = $_POST;
    $out = array_shift($post);

    // Mysql_num_row is counting table row
    foreach($post as $key => $value) {
        $sql = "UPDATE `languages` SET `value`='$value' WHERE `id`='$key'";
        $result = mysql_query($sql);
    }

    if ($result) {
        echo "Language Settings Updated";
    }

}

这种方法有效,但速度很慢。我是编码新手,我确信我忽略了一些可以加快保存过程的简单内容。

4

1 回答 1

0

您的查询实际上不应该工作,因为连接超出了函数的范围。传递连接的正确方法是通过函数:

function language( $conn ) {
    ...
}

由于注入漏洞以及函数的弃用,您应该立即mysql_停止使用您的代码。改为了解准备好的语句,并使用PDOMySQLi -本文将帮助您决定使用哪个。

根据您要更新的记录数量和建立的连接数量,它可能会减慢您的脚本速度。

如果你想INSERT记录,你需要使用准备好的语句。

另外,我不了解// Mysql_num_row is counting table rowsave_language函数中的 commnet,因为您没有在任何地方使用结果中的行数。

于 2013-02-21T02:49:29.153 回答