mysqli_insert_id()是从整个服务器还是从同一个用户获取记录?

时间:2016-08-15 14:20:32

标签: php mysqli

我有mysql问题,Private Sub loginCommandFom_Load(sender As Object, e As EventArgs) Handles MyBase.Load Try Dim commandChoices As New Recognition.Choices Dim grammarBuilder As New Recognition.GrammarBuilder 'removed commandChoices.Add(New String("Hey", "Wazzup")) grammarBuilder.Append(commandChoices) 'added Dim gr As New Recognition.Grammar(grammarBuilder) commandRecognition.LoadGrammarAsync(gr) commandRecognition.SetInputToDefaultAudioDevice() commandRecognition.RecognizeAsync() Catch ex As Exception MessageBox.Show(ex.Message, "Error!", MessageBoxButtons.OK, MessageBoxIcon.Information) End Try End Sub Private Sub speechCompleted(sender As Object, e As System.Speech.Recognition.RecognizeCompletedEventArgs) Handles commandRecognition.RecognizeCompleted commandRecognition.RecognizeAsync() End Sub Private Sub speechRecognize(sender As Object, e As System.Speech.Recognition.SpeechRecognizedEventArgs) Handles commandRecognition.SpeechRecognized Select Case e.Result.Text Case "Hey" MsgBox("Yeah") Case "Wazzup" MsgBox("Yah") End Select End Sub 从整个服务器或插入该ID的特定用户返回记录?因为如果它从整体返回,那么使用此功能将无法安全

2 个答案:

答案 0 :(得分:2)

@daan上面的评论是错误的。 insert_id()返回放置在执行insert_id()查询的连接执行的最后insert查询的auto_increment字段中的ID。

它不会返回表中最大的ID,也不会返回某个OTHER连接创建的ID,也不会返回某个OTHER用户创建的ID。

它实际上是最后插入创建的最后一个ID

这意味着执行插入100%可靠,通过last_insert_id()获取创建的ID,然后在其他查询中使用该ID创建父/子记录。

但请注意insert_id()只返回 ONE id值。如果进行多值插入,您仍然只能从最后一个值集中获取ID,例如

INSERT INTO sometable (x, y) VALUES (1,2), (2,3)

仍在内部执行两次插入,并且您只获取2,3元组的ID,而不是1,2

同样,之前的所有查询都没有内存:

INSERT ...   // query #1
INSERT ...   // query #2
SET id = last_insert_id();

只会获取查询#2创建的ID,而来自查询#1的ID是"丢失"。

答案 1 :(得分:1)

@ZainFarooq在执行函数mysqli_insert_id()之前,php中有一个名为mysqli_connect()的函数连接到服务器,然后选择数据库来获取记录。

如果是mysqli_insert_id( )function yes它使用起来非常安全,它返回一个查询生成的ID,该表具有一个具有AUTO_INCREMENT属性的列。如果最后一个查询不是INSERT或UPDATE语句,或者如果修改后的表没有具有AUTO_INCREMENT属性的列,则此函数将返回零。