使用数组更新mysql数据库中的数据

时间:2012-12-13 17:42:05

标签: php mysql arrays

我想更新数据库中已有但使用数组的信息。我得到“成功更新”消息白色,数据库中的数据不会更新。

以下是我用来插入的功能:

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">

2 个答案:

答案 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'
)