我有三个要在PHP中执行的更新语句,我将所有这些值作为返回参数获取。如何独立执行每个语句,最后向最终用户显示已成功更新的结果。
<?php
public function name($parameter1,$parameter2.... $parametern) {
}
?>
然后我们最终如何在行对象中获得结果。
答案 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();
}