我想更新数据库中已有但使用数组的信息。我得到“成功更新”消息白色,数据库中的数据不会更新。
以下是我用来插入的功能:
function update_knowledge_modules($update_data,$value)
{
$update = array();
array_walk($update_data,'array_clean');
foreach($update_data as $field=>$data)
{
$update[] = '.$field. = \''.$data.'\'';
}
$query = "UPDATE knowledge_modules SET".implode(', ',$update)."WHERE curr_code =$value";
mysql_query($query)
or die(mysql_error);
}
<?php
if(isset($_GET['success']) == true && empty($_GET['success'])==true)
{
echo 'Changed successfully';
}
else
{
if(empty($_POST)== false && empty($errors)== true )
{
$update_module = array(
'KM_Number'=>$_POST['KM_Number'],
'KM_Title'=>$_POST['KM_Title'],
'NQF_Level'=>$_POST['NQF_Level'],
'Credits'=>$_POST['Credits']
);
update_knowledge_modules($update_module,$_SESSION['Curr_Code']);
header('Location:edit_km_details.php?success');
exit();
}
else if(empty($errors)== false)
{
echo output($errors);
}
?>
<form action="edit_km_details.php" method="POST">
答案 0 :(得分:1)
嗯,首先,您只是根据$_GET['success']
正在输出“已成功更改”的消息。它与您update_knowledge_modules
函数调用中的成功或失败无关,这看起来很奇怪。
其次,我没有看到你实际建立数据库连接的任何地方。
第三,您的疑问无疑是形成不当的。看看这个:
$update[] = '.$field. = \''.$data.'\'';
您将在查询字符串中获得文字$field
和反斜杠。试试这个:
$update[] = $field . " = '" . $data . "'";
此外,在最终查询中放置内爆数组的位置,SET
之后和WHERE
之前没有空格。
任何时候你遇到查询问题,只需要var_dump
它就可以直接在数据库上运行它,看看为什么它不起作用并查看你的错误,包括mysql错误。
最后,您不应该使用mysql_*
系列函数。它们已被弃用。
答案 1 :(得分:0)
尝试:$update[] = $field . " = '" . $data . "'";
输出:
Array
(
[0] => KM_Number = 'blah'
)