在PHP中执行多个更新语句

时间:2010-04-04 20:16:05

标签: php mysql

我有三个要在PHP中执行的更新语句,我将所有这些值作为返回参数获取。如何独立执行每个语句,最后向最终用户显示已成功更新的结果。

<?php 

        public function name($parameter1,$parameter2.... $parametern) {


        }

 ?>

然后我们最终如何在行对象中获得结果。

1 个答案:

答案 0 :(得分:1)

我想我知道,从您的更新声明中我很期待您想要更新3个不同的表,这些表都依赖于“tycodashboard”。

在这种情况下,我建议您使用事务来保留一些数据完整性,否则说如果一个失败了?你会丢失一些数据。作为一般规则,如果您需要同时执行多个更新,请使用事务。

关于这个主题的一篇很棒的文章:http://dev.mysql.com/doc/refman/5.0/en/commit.html

它很容易做到,只要确保你的表正在使用INNODB,那么你所要做的就是将START TRANSACTION追加到sql脚本的顶部,然后在最后执行COMMIT。

你可能试图将太多的东西组合到一个函数中,每当我更新多个表时,更容易依次处理每个表,而不是试图将它们全部填充到一个返回中。因此,尝试创建一个保存它,返回成功或失败的函数,然后从主函数中为每个传入值的sql脚本调用它。

//This is the function that gets called from your page.
public function my_called_function() {

    //your sql script (using "" means you can put variables in without having to remove the quotes)
    $sql = "UPDATE....SET 'col' = $_POST['myvalue']";

    //Run your script and get result
    $result = $this->save_my_stuff($sql);

    //if not null means success!
    if($result) {
        echo 'success!'; // your success message
    }
    else {
        echo 'something bad happened'; //your failure message
    }
}

//this is the function that does the saving!
private function save_my_stuff($sql_script) {

    //Make connection
    $conn = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
    //Check connection
    if(!$conn) {
        //connection failed
        die('Could not connect: '.mysql_error());
    }

    //Select your database using your connection object
    mysql_select_db(DB_NAME, $conn);

    //try and save
    try {
        //run the query
        $result = mysql_query($sql_script, $conn);

        //return the result
        return mysql_result($result);
    }
    catch (Exception $e) {
        //deal with exception
        return null;
    }

    //close connection
    mysql_close();
}