好的,所以我必须运行2个依赖于其他ID才能正确同步的更新。
会话ID必须位于消息表中,其中MessageID必须位于会话表中。两者都是自动增量值。mysql_query("UPDATE ow_base_user Set activityStamp = '$stamp' where id = '$profile_id' ");
mysql_query("INSERT INTO ow_base_user_online (id, userId, activityStamp, context) VALUES ('', '$profile_id', '$stamp', '1')");
$conid = mysql_query("SELECT ID AS id FROM ow_mailbox_conversation WHERE ID = IDENT_CURRENT") + 1;
$msgid = mysql_query("SELECT ID AS id FROM ow_mailbox_message WHERE ID = IDENT_CURRENT") + 1;
mysql_query("INSERT INTO ow_mailbox_conversation (id, initiatorId, interlocutorId, subject, read, deleted, viewed, notificationSent, createStamp, initiatorDeletedTimestamp, interlocutorDeletedTimestamp, lastMessageId, lastMessageTimestamp)
VALUES ('$conid', '$profile_id', '637', 'mailbox_chat_conversation', '1', '0', '1', '0', '$stamp', '0', '0', '$msgid', '$stamp')");
mysql_query("INSERT INTO ow_mailbox_message (id, conversationId, timeStamp, senderId, recipientId, text, recipientRead, isSystem, wasAuthorized)
VALUES ('$msgid', '$conid', '$stamp', '$profile_id', '637', 'hi there', '0', '0', '1')");
我想可能我可以使用IDENT_CURRENT + 1来获取ID,但是当我回应时它什么都没有出现。对不起有点新鲜还可以
---编辑---
所以尝试使用insert_id - 问题然后是第一个数字没有正确回来。给了我一个几乎是应有的2倍的数字。
这是代码
mysql_query("INSERT INTO ow_mailbox_conversation (id, initiatorId, interlocutorId, subject, read, deleted, viewed, notificationSent, createStamp, initiatorDeletedTimestamp, interlocutorDeletedTimestamp, lastMessageId, lastMessageTimestamp)
VALUES ('', '$profile_id', '637', 'mailbox_chat_conversation', '1', '0', '1', '0', '$stamp', '0', '0', '', '$stamp')");
$conid = mysql_insert_id();
mysql_query("INSERT INTO ow_mailbox_message (id, conversationId, timeStamp, senderId, recipientId, text, recipientRead, isSystem, wasAuthorized)
VALUES ('', '$conid', '$stamp', '$profile_id', '637', 'hi there', '0', '0', '1')");
$msgid = mysql_insert_id();
mysql_query("UPDATE ow_mailbox_conversation Set lastMessageId = '$msgid' where id = '$conid' ");
---编辑---
这里是我的完整代码,除了Convarsation字符串没有插入外,一切似乎都正常工作,然后$ conid在调试中回来真的很高。
$link = mysql_connect($OW_DB_HOST, $OW_DB_USER, $OW_DB_PASS);
if (!$link) {
die('Connection fail: ' . mysql_error());
}
mysql_select_db($OW_DB_NAME, $link);
// End of connection database
$stamp = time();
//1
mysql_query("UPDATE ow_base_user Set activityStamp = '$stamp' where id = '$profile_id' ");
mysql_query("INSERT INTO ow_base_user_online (id, userId, activityStamp, context) VALUES ('', '$profile_id', '$stamp', '1')");
$receiver_id = '637';
mysql_query("INSERT INTO ow_mailbox_conversation (id, initiatorId, interlocutorId, subject, read, deleted, viewed, notificationSent, createStamp, initiatorDeletedTimestamp, interlocutorDeletedTimestamp, lastMessageId, lastMessageTimestamp)
VALUES ('', '$profile_id', '$receiver_id', 'mailbox_chat_conversation', '1', '0', '1', '0', '$stamp', '0', '0', '', '$stamp')");
$conid = mysql_insert_id();
mysql_query("INSERT INTO ow_mailbox_message (id, conversationId, timeStamp, senderId, recipientId, text, recipientRead, isSystem, wasAuthorized)
VALUES ('', '$conid', '$stamp', '$profile_id', '$receiver_id', 'hi there', '0', '0', '1')");
$msgid = mysql_insert_id();
mysql_query("INSERT INTO ow_mailbox_last_message (id, conversationId, initiatorMessageId, interlocutorMessageId)
VALUES ('', '$conid', '$msgid', '0')");
$lastmsgid = mysql_insert_id();
mysql_query("UPDATE ow_mailbox_conversation Set lastMessageId = '$lastmsgid' where id = '$conid' ");
//End of script if devmode = false
// Output all used variables on devmode = true
if (DEVMODE){
echo 'Connection ok';echo '<br>';
echo '1 = ',$conid;echo '<br>';
echo '2 = ',$msgid;echo '<br>';
echo '3 = ',$lastmsgid;echo '<br>';
}
// End of testbench
mysql_close($link);
?>
答案 0 :(得分:0)
如果使用PDO进行连接,可以使用PDO :: lastInsertId获取最后插入行的id。请参考: http://php.net/manual/en/pdo.lastinsertid.php
答案 1 :(得分:0)
您无法确定下一个插入ID,因为您的系统将(我假设)一次处理多个Feed,因为您的网站不是单用户
最好的办法是使用三个查询:
为此,我建议使用InnoDB表和事务。如果发生故障,您可以回滚到任何开始之前的状态,并最小化存在的未附加的ID。
另一种方法是创建第三个表来存储表之间的关系。从本质上讲,它存储了id1和id2,而没有其他
如果可能,请重新处理表,以便不需要此相互引用。从长远来看,这将使事情变得更容易
最后,停止使用mysql_
功能。它们在PHP 7中被弃用并完全删除。使用PDO
或mysqli_
函数。你好,谢谢我
答案 2 :(得分:0)
问题是结构错误
这是固定代码。
mysql_query("INSERT INTO ow_mailbox_conversation (id, initiatorId, interlocutorId, subject, `read`, deleted, viewed, notificationSent, createStamp, initiatorDeletedTimestamp, interlocutorDeletedTimestamp, lastMessageId, lastMessageTimestamp)
VALUES ('', $profile_id, $receiver_id, 'mailbox_chat_conversation', 1, 0, 1, 0, $stamp, 0, 0, '', $stamp)");
$conid = mysql_insert_id();
注意已删除的&#39; &#39;围绕数字和变量。