PHP MYSQL如何将$ _POST数据插入MySQL

时间:2013-02-21 02:43:09

标签: php mysql post

我使用以下代码从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";
    }

}

此方法有效,但速度很慢。我是编码的新手,我确信我会忽略一些简单的事情,这会加快保存过程。

1 个答案:

答案 0 :(得分:0)

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

function language( $conn ) {
    ...
}

由于注入漏洞以及mysql_函数的弃用,您应该 立即 停止使用您的代码。转而了解prepared statements,并使用PDOMySQLi - this article将帮助您确定哪个。

根据您要更新的记录数量和正在建立的连接数量,可能会降低您的脚本速度。

如果您希望INSERT条记录,则需要使用准备好的陈述。

另外,我不理解// Mysql_num_row is counting table row函数中的commnet save_language,因为您没有使用结果中的行数。