我使用以下代码从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";
}
}
此方法有效,但速度很慢。我是编码的新手,我确信我会忽略一些简单的事情,这会加快保存过程。
答案 0 :(得分:0)
您的查询实际上不应该正常工作,因为连接超出了函数的范围。传递连接的正确方法是通过函数:
function language( $conn ) {
...
}
由于注入漏洞以及mysql_
函数的弃用,您应该 立即 停止使用您的代码。转而了解prepared statements,并使用PDO或MySQLi - this article将帮助您确定哪个。
根据您要更新的记录数量和正在建立的连接数量,可能会降低您的脚本速度。
如果您希望INSERT
条记录,则需要使用准备好的陈述。
另外,我不理解// Mysql_num_row is counting table row
函数中的commnet save_language
,因为您没有使用结果中的行数。