sách gpt4 ăn đã đi

具有相关查询的 MySql 事务

In lại Tác giả: Walker 123 更新时间:2023-11-29 15:04:36 27 4
mua khóa gpt4 giày nike

真心希望能帮到你!

我使用以下函数在 PHP/MySql 应用程序中发送消息:

public function sendMail($sender_id, $recipient_id, $subject, $message) {
$q = "INSERT INTO MAIL_MESSAGE (subject, message, date) VALUES ('$subject', '$message', NOW() )";
$s = mysql_query($q);
if (mysql_affected_rows()==1) {
$message_id = mysql_insert_id();
$q = "INSERT INTO MAIL (user_id, sender, message_id) VALUES ('$recipient_id','$sender_id','$message_id')";
$s = mysql_query($q);
if (mysql_affected_rows()==1)
trả về giá trị đúng;
}
trả về false;
}

我使用两个表(MAIL_MESSAGE 和 MAIL),因为相同的“$sender_id”可以将相同的消息发送到多个“$recipient_id”。

现在的问题是,如果最后一个查询失败,我在 MAIL_MESSAGE 中有一行,而在 MAIL 中没有相应的行。我该如何解决这个问题?

交易可以提供帮助,但我不知道如何让它发挥作用!

预先感谢您的帮助。

câu trả lời hay nhất

在序列的开头添加“开始”以启动事务。仅当两次插入都成功时才提交事务,否则回滚事务。

我不了解 PHP,但根据您的示例,它看起来如下所示:

public function sendMail($sender_id, $recipient_id, $subject, $message) {
$s = mysql_query("begin");
$q = "INSERT INTO MAIL_MESSAGE (subject, message, date) VALUES ('$subject', '$message', NOW() )";
$s = mysql_query($q);
if (mysql_affected_rows()==1) {
$message_id = mysql_insert_id();
$q = "INSERT INTO MAIL (user_id, sender, message_id) VALUES ('$recipient_id','$sender_id','$message_id')";
$s = mysql_query($q);
if (mysql_affected_rows()==1) {
$s = mysql_query("commit");
trả về giá trị đúng;
}
$s = mysql_query( "rollback" );
trả về false;
}

关于具有相关查询的 MySql 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2433459/

27 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress