DbPoll: Difference between revisions
Jump to navigation
Jump to search
No edit summary |
No edit summary |
||
Line 14: | Line 14: | ||
===Returns=== | ===Returns=== | ||
*''nil:'' Returns nil if the query results are not yet ready. You should try again in a little while. (If you give up waiting for a result, be sure to call [[dbFree]]) | *''nil:'' Returns nil if the query results are not yet ready. You should try again in a little while. (If you give up waiting for a result, be sure to call [[dbFree]]) | ||
*''false'' Returns false if the query string contained an error, the connection has been lost or the query handle is incorrect. This automatically frees the query handle, so you do not have to call [[dbFree]]. | *''false:'' Returns false if the query string contained an error, the connection has been lost or the query handle is incorrect. This automatically frees the query handle, so you do not have to call [[dbFree]]. | ||
** This also returns two extra values: | ** This also returns two extra values: (See the example on how the retrieve them) | ||
***''int:'' error code | |||
***''string'' error message | |||
*''table:'' Returns a table when the query has successfully completed. This automatically frees the query handle, so you do not have to call [[dbFree]]. | *''table:'' Returns a table when the query has successfully completed. This automatically frees the query handle, so you do not have to call [[dbFree]]. | ||
** This also returns | ** This also returns extra values: | ||
***''int:'' number of affected rows | |||
{{New_feature|3.135|1.3.5| | |||
***''int:'' last insert id | |||
}} | |||
==Example== | ==Example== | ||
This example waits until a result is ready: | This example waits until a result is ready: | ||
Line 27: | Line 32: | ||
This example shows the possible return values: | This example shows the possible return values: | ||
<syntaxhighlight lang="lua"> | <syntaxhighlight lang="lua"> | ||
local result, | local result, extra1, extra2 = dbPoll ( qh, -1 ) | ||
if result == nil then | if result == nil then | ||
outputConsole( "dbPoll result not ready yet" ) | outputConsole( "dbPoll result not ready yet" ) | ||
elseif result == false then | elseif result == false then | ||
outputConsole( "dbPoll failed. Error code: " .. tostring( | local error_code = extra1 | ||
local error_msg = extra2 | |||
outputConsole( "dbPoll failed. Error code: " .. tostring(error_code) .. " Error message: " .. tostring(error_msg) ) | |||
else | else | ||
outputConsole( "dbPoll succeeded. Number of affected rows: " .. tostring(num_affected_rows) ) | local num_affected_rows = extra1 | ||
local last_insert_id = extra2 | |||
outputConsole( "dbPoll succeeded. Number of affected rows: " .. tostring(num_affected_rows) .. " Last insert id: " .. tostring(last_insert_id) ) | |||
end | end | ||
</syntaxhighlight> | </syntaxhighlight> | ||
Line 59: | Line 68: | ||
==Requirements== | ==Requirements== | ||
{{Requirements|1.1.1-9.03328|n/a}} | {{Requirements|1.1.1-9.03328|n/a}} | ||
==Changelog== | |||
{{ChangelogHeader}} | |||
{{ChangelogItem|1.3.4-9.05864|Added 'last insert id' return value}} | |||
==See Also== | ==See Also== | ||
{{Registry_functions}} | {{Registry_functions}} |
Revision as of 08:19, 7 October 2013
This function checks the progress of a database query.
Syntax
table dbPoll ( handle queryHandle, int timeout )
Required Arguments
- queryHandle: A query handle previously returned from dbQuery
- timeout: How many milliseconds to wait for a result. Use 0 for an instant response (which may return nil). Use -1 to wait until a result is ready. Note: A wait here will freeze the entire server just like the executeSQL* functions
Returns
- nil: Returns nil if the query results are not yet ready. You should try again in a little while. (If you give up waiting for a result, be sure to call dbFree)
- false: Returns false if the query string contained an error, the connection has been lost or the query handle is incorrect. This automatically frees the query handle, so you do not have to call dbFree.
- This also returns two extra values: (See the example on how the retrieve them)
- int: error code
- string error message
- This also returns two extra values: (See the example on how the retrieve them)
- table: Returns a table when the query has successfully completed. This automatically frees the query handle, so you do not have to call dbFree.
- This also returns extra values:
- int: number of affected rows
- This also returns extra values:
Example
This example waits until a result is ready:
local result = dbPoll ( qh, -1 )
This example shows the possible return values:
local result, extra1, extra2 = dbPoll ( qh, -1 ) if result == nil then outputConsole( "dbPoll result not ready yet" ) elseif result == false then local error_code = extra1 local error_msg = extra2 outputConsole( "dbPoll failed. Error code: " .. tostring(error_code) .. " Error message: " .. tostring(error_msg) ) else local num_affected_rows = extra1 local last_insert_id = extra2 outputConsole( "dbPoll succeeded. Number of affected rows: " .. tostring(num_affected_rows) .. " Last insert id: " .. tostring(last_insert_id) ) end
This example shows how to handle the result if the query selected data:
local result, num_affected_rows, errmsg = dbPoll ( qh, -1 ) if result then for _, row in ipairs ( result ) do -- by using a second loop (use it if you want to get the values of all columns the query selected): for column, value in pairs ( row ) do -- column = the mysql column of the table in the query -- value = the value of that column in this certain row end -- or without a second loop (use it if you want to handle every value in a special way): outputChatBox ( row["column"] ) -- it will output the value of the column "column" in this certain row end end
Requirements
This template will be deleted.
Changelog
Version | Description |
---|
1.3.4-9.05864 | Added 'last insert id' return value |
See Also