我使用以下代码从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";
}
}此方法有效,但速度非常慢。我是编程新手,我确信我忽略了一些简单的东西,可以加快保存过程。
发布于 2013-02-21 10:49:29
您的查询实际上不应该工作,因为连接超出了函数的作用域。传递连接的正确方法是通过函数:
function language( $conn ) {
...
}由于注入漏洞和mysql_函数的弃用,您应该立即停止使用您的代码。相反,学习,并使用PDO或MySQLi - this article将帮助您决定使用哪种方法。
根据您要更新的记录数和要建立的连接数,它可能会减慢您的脚本速度。
如果您希望准备记录,则需要使用INSERT语句。
另外,我不理解save_language函数中的commnet // Mysql_num_row is counting table row,因为您在任何地方都没有使用结果中的行数。
https://stackoverflow.com/questions/14993697
复制相似问题