如何在php for mysql中获取next autoincrements的值
好的,所以我必须运行2个更新,它们依赖于彼此的ID来正确同步 对话ID必须在消息表中,其中as MessageID必须在对话表中。两者都是自动增量值如何在php for mysql中获取next autoincrements的值,php,mysql,Php,Mysql,好的,所以我必须运行2个更新,它们依赖于彼此的ID来正确同步 对话ID必须在消息表中,其中as 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
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);
?>
$link=mysql\u connect($OW\u DB\u HOST、$OW\u DB\u USER、$OW\u DB\u PASS);
如果(!$link){
die('连接失败:'.mysql_error());
}
mysql\u select\u db($OW\u db\u NAME,$link);
//连接结束数据库
$stamp=time();
//1
mysql_查询(“更新ow_base_用户集activityStamp='$stamp',其中id='$profile_id');
mysql_查询(“插入ow_base_user_online(id、userId、activityStamp、context))值(“''$profile_id','$stamp','1');
$receiver_id='637';
mysql_查询(“插入ow_邮箱_会话(id、initiatorId、对话者id、主题、读取、删除、查看、通知发送、createStamp、initiatorDeletedTimestamp、对话者DeletedTimestamp、lastMessageId、lastMessageTimestamp)
值(“'$profile\u id',“$receiver\u id”,“mailbox\u chat\u conversation”,“1”,“0”,“0”,“$stamp”,“0”,“0”,“$stamp”));
$conid=mysql_insert_id();
mysql_查询(“插入ow_邮箱_邮件(id、conversationId、时间戳、senderId、recipientId、文本、recipientRead、isSystem、wasAuthorized))
值(“'$conid'、'$stamp'、'$profile_id'、'$receiver_id'、'hi there'、'0'、'0'、'1');
$msgid=mysql_insert_id();
mysql_查询(“插入ow_邮箱_最后一条_消息(id、conversationId、initiatorMessageId、InterlocurMessageID))
值(“'$conid','$msgid','0');
$lastmsgid=mysql\u insert\u id();
mysql_查询(“更新ow_邮箱_会话集lastMessageId='$lastmsgid',其中id='$conid');
//如果devmode=false,则结束脚本
//在devmode=true上输出所有使用的变量
if(DEVMODE){
回显“连接正常”;回显“
”;
echo“1=”,$conid;echo“
”;
echo“2=”,$msgid;echo“
”;
echo“3=”,$lastmsgid;echo“
”;
}
//试验台末端
mysql_close($link);
?>
如果使用PDO进行连接,则可以使用PDO::lastInsertId获取最后插入行的id。请参阅:
备选方案,
您无法确定下一个插入ID,因为您的系统(我假设)将同时处理多个提要,因为您的站点不是单个用户 最好使用三个查询:
最后,停止使用
mysql\u
函数。它们在PHP7中被弃用并完全删除。使用PDO
或mysqli
功能。你会感谢我的问题是结构错误
这是固定代码
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();
请注意,在数字和变量周围删除了“” 我以为insert ID只有在查询更新运行后才起作用?在它运行之前我需要ID。不过我会仔细阅读你发来的邮件。非常感谢你提供的信息。。但此服务器当前未使用php7。无法按enter键输入新行。。。哦,好吧。。我已经解决了我的问题,只是一些简单的错误。。现在一切都正常了。问题是,
mysql\u
函数已经被弃用了一段时间,最好的办法是转到PDO或mysqli\u
。使用这两种方法中的任何一种都将使您能够使用预先准备好的语句,从而消除转义传递数据的需要。PDO还为您提供了一个抽象层,因此,如果您决定迁移到另一个DB平台,它将使事情变得更简单。我发现PDO更容易相处,但这是个人选择的问题