<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yoodie</id>
	<title>Multi Theft Auto: Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.multitheftauto.com/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Yoodie"/>
	<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/wiki/Special:Contributions/Yoodie"/>
	<updated>2026-04-25T06:43:32Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/executeSQLQuery&amp;diff=65365</id>
		<title>RU/executeSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/executeSQLQuery&amp;diff=65365"/>
		<updated>2020-03-11T06:40:43Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: Created page with &amp;quot;__NOTOC__ {{Server function}} Эта функция выполняет произвольный запрос SQL и возвращает строки результата, е...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
Эта функция выполняет произвольный запрос SQL и возвращает строки результата, если они существуют. Это обеспечивает привязку параметров для безопасности (предотвращает SQL-инъекции).&lt;br /&gt;
{{Примечание| Эта функция действует только для registry.db. Используйте dbQuery для запроса пользовательской базы данных SQL.}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные аргументы===&lt;br /&gt;
*'''query:''' SQL-запрос. Позиции, в которые будут вставлены значения параметров, отмечены знаком &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Необязательные аргументы===&lt;br /&gt;
*'''paramX:''' переменное количество параметров. Это должны быть строки или числа - важно убедиться, что они имеют правильный тип. Кроме того, количество передаваемых параметров должно быть равно количеству &amp;quot;?&amp;quot; символы в строке запроса.&lt;br /&gt;
&lt;br /&gt;
Строковые параметры автоматически экранируются добавлением обратной косой черты \ перед символами ' и \&lt;br /&gt;
&lt;br /&gt;
===Возвращает===&lt;br /&gt;
Возвращает таблицу с результатом запроса, если это был запрос SELECT, или ''false'', если это не так. В случае запроса SELECT таблица результатов может быть пустой (если строк результатов нет). Таблица имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Следующая таблица представляет следующую строку.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены примеры эквивалентов для устаревших функций executeSQL. Обратите внимание, что ` (символ) может использоваться для окружения имен таблиц и строк. Обычно это хорошая идея, чтобы избежать конфликтов имен с зарезервированными словами SQL.&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Эквивалент executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLDropTable: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLSelect: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLInsert: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLUpdate: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере определяется консольная команда, которая показывает идентификаторы и имена всех зарегистрированных (сохраненных в базе данных) игроков, у которых сумма денег превышает указанную.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере показано количество денег, которое имеет определенный зарегистрированный игрок.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на отсутствие одинарных кавычек вокруг &amp;quot;?&amp;quot; в этом примере, хотя он представляет строку. executeSQLQuery увидит, что переменная playerName является строкой, и позаботится о правильном выполнении запроса самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Преимущество использования executeSQLQuery заключается в том, что он невосприимчив к пользователям, пытающимся использовать запрос с помощью атаки SQL-инъекцией. playerName может содержать специальные символы, такие как ', &amp;quot;или -, которые не будут влиять на запрос, в отличие от более старого подхода, где playerName будет объединяться в строку запроса.&lt;br /&gt;
[[en:ExecuteSQLQuery]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=Ru/executeSQLQuery&amp;diff=65293</id>
		<title>Ru/executeSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=Ru/executeSQLQuery&amp;diff=65293"/>
		<updated>2020-03-01T10:06:03Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: Yoodie moved page Ru/executeSQLQuery to Ru/ExecuteSQLQuery: the link from the English page does not work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[Ru/ExecuteSQLQuery]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65292</id>
		<title>RU/ExecuteSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65292"/>
		<updated>2020-03-01T10:06:03Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: Yoodie moved page Ru/executeSQLQuery to Ru/ExecuteSQLQuery: the link from the English page does not work&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
Эта функция выполняет произвольный запрос SQL и возвращает строки результата, если они существуют. Это обеспечивает привязку параметров для безопасности (предотвращает SQL-инъекции).&lt;br /&gt;
{{Примечание| Эта функция действует только для registry.db. Используйте dbQuery для запроса пользовательской базы данных SQL.}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные аргументы===&lt;br /&gt;
*'''query:''' SQL-запрос. Позиции, в которые будут вставлены значения параметров, отмечены знаком &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Необязательные аргументы===&lt;br /&gt;
*'''paramX:''' переменное количество параметров. Это должны быть строки или числа - важно убедиться, что они имеют правильный тип. Кроме того, количество передаваемых параметров должно быть равно количеству &amp;quot;?&amp;quot; символы в строке запроса.&lt;br /&gt;
&lt;br /&gt;
Строковые параметры автоматически экранируются добавлением обратной косой черты \ перед символами ' и \&lt;br /&gt;
&lt;br /&gt;
===Возвращает===&lt;br /&gt;
Возвращает таблицу с результатом запроса, если это был запрос SELECT, или ''false'', если это не так. В случае запроса SELECT таблица результатов может быть пустой (если строк результатов нет). Таблица имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Следующая таблица представляет следующую строку.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены примеры эквивалентов для устаревших функций executeSQL. Обратите внимание, что ` (символ) может использоваться для окружения имен таблиц и строк. Обычно это хорошая идея, чтобы избежать конфликтов имен с зарезервированными словами SQL.&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Эквивалент executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLDropTable: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLSelect: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLInsert: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLUpdate: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере определяется консольная команда, которая показывает идентификаторы и имена всех зарегистрированных (сохраненных в базе данных) игроков, у которых сумма денег превышает указанную.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере показано количество денег, которое имеет определенный зарегистрированный игрок.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на отсутствие одинарных кавычек вокруг &amp;quot;?&amp;quot; в этом примере, хотя он представляет строку. executeSQLQuery увидит, что переменная playerName является строкой, и позаботится о правильном выполнении запроса самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Преимущество использования executeSQLQuery заключается в том, что он невосприимчив к пользователям, пытающимся использовать запрос с помощью атаки SQL-инъекцией. playerName может содержать специальные символы, такие как ', &amp;quot;или -, которые не будут влиять на запрос, в отличие от более старого подхода, где playerName будет объединяться в строку запроса.&lt;br /&gt;
[[en:ExecuteSQLQuery]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ExecuteSQLQuery&amp;diff=65291</id>
		<title>ExecuteSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ExecuteSQLQuery&amp;diff=65291"/>
		<updated>2020-03-01T10:01:32Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
&lt;br /&gt;
This function executes an arbitrary SQL query and returns the result rows if there are any. It allows parameter binding for security (SQL injection is rendered impossible).&lt;br /&gt;
{{Note|This function only acts upon registry.db. Use [[dbQuery]] to query a custom SQL database.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''query:''' An SQL query. Positions where parameter values will be inserted are marked with a &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''paramX:''' A variable number of parameters. These must be strings or numbers - it is important to make sure they are of the correct type. Also, the number of parameters passed must be equal to the number of &amp;quot;?&amp;quot; characters in the query string.&lt;br /&gt;
String parameters are automatically escaped by adding a backslash (\) before ' and \ characters.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a table with the result of the query if it was a SELECT query, or ''false'' if otherwise. In case of a SELECT query the result table may be empty (if there are no result rows). The table is of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A subsequent table represents the next row.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Below are examples of equivalents for the deprecated executeSQL functions. Note that ` (backtick) can optionally be used to surround table and row names. It usually a good idea to do this to avoid name clashes with SQL reserved words.&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLDropTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLSelect:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLInsert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLUpdate:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This example defines a console command that shows the ID's and names of all registered (stored in database) players that have more than the specified amount of money.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This example shows the amount of money a certain registered player has.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the lack of single quotes around the &amp;quot;?&amp;quot; in this example, even though it represents a string. executeSQLQuery will see that the playerName variable is a string and take care of the correct execution of the query by itself.&lt;br /&gt;
&lt;br /&gt;
The advantage of using executeSQLQuery is that it is immune to users trying to exploit the query with an SQL injection attack. playerName may contain special characters like ', &amp;quot; or -- that will not influence the query, unlike the older approach where playerName would be concatenated into the query string.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Registry_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ru:executeSQLQuery]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=ExecuteSQLQuery&amp;diff=65290</id>
		<title>ExecuteSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=ExecuteSQLQuery&amp;diff=65290"/>
		<updated>2020-03-01T09:59:14Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
&lt;br /&gt;
This function executes an arbitrary SQL query and returns the result rows if there are any. It allows parameter binding for security (SQL injection is rendered impossible).&lt;br /&gt;
{{Note|This function only acts upon registry.db. Use [[dbQuery]] to query a custom SQL database.}}&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Required Arguments===&lt;br /&gt;
*'''query:''' An SQL query. Positions where parameter values will be inserted are marked with a &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Optional Arguments===&lt;br /&gt;
*'''paramX:''' A variable number of parameters. These must be strings or numbers - it is important to make sure they are of the correct type. Also, the number of parameters passed must be equal to the number of &amp;quot;?&amp;quot; characters in the query string.&lt;br /&gt;
String parameters are automatically escaped by adding a backslash (\) before ' and \ characters.&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns a table with the result of the query if it was a SELECT query, or ''false'' if otherwise. In case of a SELECT query the result table may be empty (if there are no result rows). The table is of the form:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
A subsequent table represents the next row.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
Below are examples of equivalents for the deprecated executeSQL functions. Note that ` (backtick) can optionally be used to surround table and row names. It usually a good idea to do this to avoid name clashes with SQL reserved words.&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLDropTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLSelect:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLInsert:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Example equivalents for executeSQLUpdate:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This example defines a console command that shows the ID's and names of all registered (stored in database) players that have more than the specified amount of money.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This example shows the amount of money a certain registered player has.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Notice the lack of single quotes around the &amp;quot;?&amp;quot; in this example, even though it represents a string. executeSQLQuery will see that the playerName variable is a string and take care of the correct execution of the query by itself.&lt;br /&gt;
&lt;br /&gt;
The advantage of using executeSQLQuery is that it is immune to users trying to exploit the query with an SQL injection attack. playerName may contain special characters like ', &amp;quot; or -- that will not influence the query, unlike the older approach where playerName would be concatenated into the query string.&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Registry_functions}}&lt;br /&gt;
&lt;br /&gt;
[[ru:ExecuteSQLQuery]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65289</id>
		<title>RU/ExecuteSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65289"/>
		<updated>2020-03-01T09:58:54Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
Эта функция выполняет произвольный запрос SQL и возвращает строки результата, если они существуют. Это обеспечивает привязку параметров для безопасности (предотвращает SQL-инъекции).&lt;br /&gt;
{{Примечание| Эта функция действует только для registry.db. Используйте dbQuery для запроса пользовательской базы данных SQL.}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные аргументы===&lt;br /&gt;
*'''query:''' SQL-запрос. Позиции, в которые будут вставлены значения параметров, отмечены знаком &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Необязательные аргументы===&lt;br /&gt;
*'''paramX:''' переменное количество параметров. Это должны быть строки или числа - важно убедиться, что они имеют правильный тип. Кроме того, количество передаваемых параметров должно быть равно количеству &amp;quot;?&amp;quot; символы в строке запроса.&lt;br /&gt;
&lt;br /&gt;
Строковые параметры автоматически экранируются добавлением обратной косой черты \ перед символами ' и \&lt;br /&gt;
&lt;br /&gt;
===Возвращает===&lt;br /&gt;
Возвращает таблицу с результатом запроса, если это был запрос SELECT, или ''false'', если это не так. В случае запроса SELECT таблица результатов может быть пустой (если строк результатов нет). Таблица имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Следующая таблица представляет следующую строку.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены примеры эквивалентов для устаревших функций executeSQL. Обратите внимание, что ` (символ) может использоваться для окружения имен таблиц и строк. Обычно это хорошая идея, чтобы избежать конфликтов имен с зарезервированными словами SQL.&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Эквивалент executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLDropTable: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLSelect: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLInsert: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLUpdate: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере определяется консольная команда, которая показывает идентификаторы и имена всех зарегистрированных (сохраненных в базе данных) игроков, у которых сумма денег превышает указанную.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере показано количество денег, которое имеет определенный зарегистрированный игрок.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на отсутствие одинарных кавычек вокруг &amp;quot;?&amp;quot; в этом примере, хотя он представляет строку. executeSQLQuery увидит, что переменная playerName является строкой, и позаботится о правильном выполнении запроса самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Преимущество использования executeSQLQuery заключается в том, что он невосприимчив к пользователям, пытающимся использовать запрос с помощью атаки SQL-инъекцией. playerName может содержать специальные символы, такие как ', &amp;quot;или -, которые не будут влиять на запрос, в отличие от более старого подхода, где playerName будет объединяться в строку запроса.&lt;br /&gt;
[[en:ExecuteSQLQuery]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65288</id>
		<title>RU/ExecuteSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65288"/>
		<updated>2020-03-01T09:13:36Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
Эта функция выполняет произвольный запрос SQL и возвращает строки результата, если они существуют. Это обеспечивает привязку параметров для безопасности (предотвращает SQL-инъекции).&lt;br /&gt;
{{Примечание| Эта функция действует только для registry.db. Используйте dbQuery для запроса пользовательской базы данных SQL.}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные аргументы===&lt;br /&gt;
*'''query:''' SQL-запрос. Позиции, в которые будут вставлены значения параметров, отмечены знаком &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Необязательные аргументы===&lt;br /&gt;
*'''paramX:''' переменное количество параметров. Это должны быть строки или числа - важно убедиться, что они имеют правильный тип. Кроме того, количество передаваемых параметров должно быть равно количеству &amp;quot;?&amp;quot; символы в строке запроса.&lt;br /&gt;
&lt;br /&gt;
Строковые параметры автоматически экранируются добавлением обратной косой черты \ перед символами ' и \&lt;br /&gt;
&lt;br /&gt;
===Возвращает===&lt;br /&gt;
Возвращает таблицу с результатом запроса, если это был запрос SELECT, или ''false'', если это не так. В случае запроса SELECT таблица результатов может быть пустой (если строк результатов нет). Таблица имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Следующая таблица представляет следующую строку.&lt;br /&gt;
&lt;br /&gt;
==Пример==&lt;br /&gt;
&lt;br /&gt;
Ниже приведены примеры эквивалентов для устаревших функций executeSQL. Обратите внимание, что ` (символ) может использоваться для окружения имен таблиц и строк. Обычно это хорошая идея, чтобы избежать конфликтов имен с зарезервированными словами SQL.&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Эквивалент executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLDropTable: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLSelect: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLInsert: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLUpdate: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере определяется консольная команда, которая показывает идентификаторы и имена всех зарегистрированных (сохраненных в базе данных) игроков, у которых сумма денег превышает указанную.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере показано количество денег, которое имеет определенный зарегистрированный игрок.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на отсутствие одинарных кавычек вокруг &amp;quot;?&amp;quot; в этом примере, хотя он представляет строку. executeSQLQuery увидит, что переменная playerName является строкой, и позаботится о правильном выполнении запроса самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Преимущество использования executeSQLQuery заключается в том, что он невосприимчив к пользователям, пытающимся использовать запрос с помощью атаки SQL-инъекцией. playerName может содержать специальные символы, такие как ', &amp;quot;или -, которые не будут влиять на запрос, в отличие от более старого подхода, где playerName будет объединяться в строку запроса.&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65287</id>
		<title>RU/ExecuteSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65287"/>
		<updated>2020-03-01T09:12:48Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
Эта функция выполняет произвольный запрос SQL и возвращает строки результата, если они существуют. Это обеспечивает привязку параметров для безопасности (предотвращает SQL-инъекции).&lt;br /&gt;
{{Примечание| Эта функция действует только для registry.db. Используйте dbQuery для запроса пользовательской базы данных SQL.}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные аргументы===&lt;br /&gt;
*'''query:''' SQL-запрос. Позиции, в которые будут вставлены значения параметров, отмечены знаком &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Необязательные аргументы===&lt;br /&gt;
*'''paramX:''' переменное количество параметров. Это должны быть строки или числа - важно убедиться, что они имеют правильный тип. Кроме того, количество передаваемых параметров должно быть равно количеству &amp;quot;?&amp;quot; символы в строке запроса.&lt;br /&gt;
&lt;br /&gt;
Строковые параметры автоматически экранируются добавлением обратной косой черты \ перед символами ' и \&lt;br /&gt;
&lt;br /&gt;
===Возвращает===&lt;br /&gt;
Возвращает таблицу с результатом запроса, если это был запрос SELECT, или ''false'', если это не так. В случае запроса SELECT таблица результатов может быть пустой (если строк результатов нет). Таблица имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Следующая таблица представляет следующую строку.&lt;br /&gt;
&lt;br /&gt;
Пример&lt;br /&gt;
&lt;br /&gt;
Ниже приведены примеры эквивалентов для устаревших функций executeSQL. Обратите внимание, что ` (символ) может использоваться для окружения имен таблиц и строк. Обычно это хорошая идея, чтобы избежать конфликтов имен с зарезервированными словами SQL.&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Эквивалент executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLDropTable: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLSelect: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLInsert: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLUpdate: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере определяется консольная команда, которая показывает идентификаторы и имена всех зарегистрированных (сохраненных в базе данных) игроков, у которых сумма денег превышает указанную.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере показано количество денег, которое имеет определенный зарегистрированный игрок.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на отсутствие одинарных кавычек вокруг &amp;quot;?&amp;quot; в этом примере, хотя он представляет строку. executeSQLQuery увидит, что переменная playerName является строкой, и позаботится о правильном выполнении запроса самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Преимущество использования executeSQLQuery заключается в том, что он невосприимчив к пользователям, пытающимся использовать запрос с помощью атаки SQL-инъекцией. playerName может содержать специальные символы, такие как ', &amp;quot;или -, которые не будут влиять на запрос, в отличие от более старого подхода, где playerName будет объединяться в строку запроса.&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65286</id>
		<title>RU/ExecuteSQLQuery</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/ExecuteSQLQuery&amp;diff=65286"/>
		<updated>2020-03-01T09:11:26Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: Created page with &amp;quot;__NOTOC__ {{Server function}} Эта функция выполняет произвольный запрос SQL и возвращает строки результата, е...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server function}}&lt;br /&gt;
Эта функция выполняет произвольный запрос SQL и возвращает строки результата, если они существуют. Это обеспечивает привязку параметров для безопасности (предотвращает SQL-инъекции).&lt;br /&gt;
&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
table executeSQLQuery ( string query [, var param1 [, var param2 ... ] ] )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Обязательные аргументы===&lt;br /&gt;
*'''query:''' SQL-запрос. Позиции, в которые будут вставлены значения параметров, отмечены знаком &amp;quot;?&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Необязательные аргументы===&lt;br /&gt;
*'''paramX:''' переменное количество параметров. Это должны быть строки или числа - важно убедиться, что они имеют правильный тип. Кроме того, количество передаваемых параметров должно быть равно количеству &amp;quot;?&amp;quot; символы в строке запроса.&lt;br /&gt;
&lt;br /&gt;
Строковые параметры автоматически экранируются добавлением обратной косой черты \ перед символами ' и \&lt;br /&gt;
&lt;br /&gt;
===Возвращает===&lt;br /&gt;
Возвращает таблицу с результатом запроса, если это был запрос SELECT, или ''false'', если это не так. В случае запроса SELECT таблица результатов может быть пустой (если строк результатов нет). Таблица имеет вид:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
    { colname1=value1, colname2=value2, ... },&lt;br /&gt;
    { colname1=value3, colname2=value4, ... },&lt;br /&gt;
    ...&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Следующая таблица представляет следующую строку.&lt;br /&gt;
&lt;br /&gt;
Пример&lt;br /&gt;
&lt;br /&gt;
Ниже приведены примеры эквивалентов для устаревших функций executeSQL. Обратите внимание, что ` (символ) может использоваться для окружения имен таблиц и строк. Обычно это хорошая идея, чтобы избежать конфликтов имен с зарезервированными словами SQL.&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLCreateTable:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS players (clothes_head_texture TEXT, clothes_head_model TEXT, name TEXT)&amp;quot;)&lt;br /&gt;
executeSQLQuery(&amp;quot;CREATE TABLE IF NOT EXISTS `players` (`clothes_head_texture` TEXT, `clothes_head_model` TEXT, `name` TEXT)&amp;quot;)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Эквивалент executeSQLDelete:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
executeSQLQuery(&amp;quot;DELETE FROM `players` WHERE `name`=?&amp;quot;, playerName)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLDropTable: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE players&amp;quot; )&lt;br /&gt;
executeSQLQuery(&amp;quot;DROP TABLE `players`&amp;quot; )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLSelect: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT score,health FROM players WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;SELECT `score`,`health` FROM `players` WHERE `name`=?&amp;quot;, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLInsert: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO players(name,color,sound) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
executeSQLQuery(&amp;quot;INSERT INTO `players`(`name`,`color`,`sound`) VALUES(?,?,?)&amp;quot;, playerName, colorName, soundName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Эквивалент executeSQLUpdate: &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
playerName = getPlayerName(thePlayer)&lt;br /&gt;
colorName = &amp;quot;Blue&amp;quot;&lt;br /&gt;
soundName = &amp;quot;sound.mp3&amp;quot;&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color='green',sound='somehead' WHERE name=?&amp;quot;, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE players SET color=?,sound=? WHERE name=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
executeSQLQuery(&amp;quot;UPDATE `players` SET `color`=?,`sound`=? WHERE `name`=?&amp;quot;, colorName, soundName, playerName )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере определяется консольная команда, которая показывает идентификаторы и имена всех зарегистрированных (сохраненных в базе данных) игроков, у которых сумма денег превышает указанную.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function listPlayersWithMoreMoneyThan(thePlayer, command, amount)&lt;br /&gt;
    local players = executeSQLQuery(&amp;quot;SELECT id, name FROM players WHERE money &amp;gt; ?&amp;quot;, tonumber(amount))&lt;br /&gt;
    outputConsole(&amp;quot;Players with more money than &amp;quot; .. amount .. &amp;quot;:&amp;quot;, thePlayer)&lt;br /&gt;
    for i, playerdata in ipairs(players) do&lt;br /&gt;
        outputConsole(playerdata.id .. &amp;quot;: &amp;quot; .. playerdata.name, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
addCommandHandler(&amp;quot;richplayers&amp;quot;, listPlayersWithMoreMoneyThan)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
В этом примере показано количество денег, которое имеет определенный зарегистрированный игрок.&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
function showPlayerMoney(thePlayer, command, playerName)&lt;br /&gt;
    local result = executeSQLQuery(&amp;quot;SELECT money FROM players WHERE name=?&amp;quot;, playerName)&lt;br /&gt;
    if(#result == 0) then&lt;br /&gt;
        outputConsole(&amp;quot;No player named &amp;quot; .. playerName .. &amp;quot; is registered.&amp;quot;, thePlayer)&lt;br /&gt;
    else&lt;br /&gt;
        outputConsole(&amp;quot;Money amount of player &amp;quot; .. playerName .. &amp;quot; is &amp;quot; .. result[1].money, thePlayer)&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
addCommandHandler(&amp;quot;playermoney&amp;quot;, showPlayerMoney)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Обратите внимание на отсутствие одинарных кавычек вокруг &amp;quot;?&amp;quot; в этом примере, хотя он представляет строку. executeSQLQuery увидит, что переменная playerName является строкой, и позаботится о правильном выполнении запроса самостоятельно.&lt;br /&gt;
&lt;br /&gt;
Преимущество использования executeSQLQuery заключается в том, что он невосприимчив к пользователям, пытающимся использовать запрос с помощью атаки SQL-инъекцией. playerName может содержать специальные символы, такие как ', &amp;quot;или -, которые не будут влиять на запрос, в отличие от более старого подхода, где playerName будет объединяться в строку запроса.&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65275</id>
		<title>RU/GetTickCount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65275"/>
		<updated>2020-02-27T12:00:58Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Эта функция возвращает количество времени, которое ваша система работала в миллисекундах. Сравнивая два значения '''getTickCount''', вы можете определить, сколько времени прошло (в миллисекундах) между двумя событиями. Это может быть использовано для определения того, насколько эффективен ваш код, или для определения времени, которое требуется игроку для выполнения задачи.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{RU/Server client function}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getTickCount ()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Вовзращает===&lt;br /&gt;
Возвращает целое число, содержащее количество миллисекунд с момента запуска системы, на которой работает сервер.&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;screenX,screenY = guiGetScreenSize()&lt;br /&gt;
function startTheClock ()&lt;br /&gt;
	&lt;br /&gt;
	if not systemUpTime then&lt;br /&gt;
            systemUpTime = getTickCount () --Store the system tick count, this will be 0 for us&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	currentCount = getTickCount ()&lt;br /&gt;
	&lt;br /&gt;
	dxDrawRectangle (screenX *.40, screenY * .09, 250, 50, tocolor(0,0,0,150))&lt;br /&gt;
	dxDrawText ( currentCount - systemUpTime, screenX * .48, screenY * .1, screenX, screenY, tocolor(255,255,255), 2)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientRender&amp;quot;, root, startTheClock )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Это запустит таймер, показываемый в верхней части экрана, отображаясь каждый кадр. Вы можете фиксировать любой конкретный момент времени, выводя переменную currentCount.&lt;br /&gt;
&lt;br /&gt;
[[en:GetTickCount]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=GetTickCount&amp;diff=65274</id>
		<title>GetTickCount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=GetTickCount&amp;diff=65274"/>
		<updated>2020-02-27T12:00:20Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
This function returns amount of time that your system has been running in milliseconds. By comparing two values of [[getTickCount]], you can determine how much time has passed (in milliseconds) between two events. This could be used to determine how efficient your code is, or to time how long a player takes to complete a task.&lt;br /&gt;
&lt;br /&gt;
==Syntax==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getTickCount ()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Returns===&lt;br /&gt;
Returns an integer containing the number of milliseconds since the system the server is running on started. This has the potential to wrap-around.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
This will start a timer displayed at the top of the screen displayed every frame. You can log any specific moment in time by outputting the currentCount variable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;screenX,screenY = guiGetScreenSize()&lt;br /&gt;
function startTheClock ()&lt;br /&gt;
	&lt;br /&gt;
	if not systemUpTime then&lt;br /&gt;
            systemUpTime = getTickCount () --Store the system tick count, this will be 0 for us&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	currentCount = getTickCount ()&lt;br /&gt;
	&lt;br /&gt;
	dxDrawRectangle (screenX *.40, screenY * .09, 250, 50, tocolor(0,0,0,150))&lt;br /&gt;
	dxDrawText ( currentCount - systemUpTime, screenX * .48, screenY * .1, screenX, screenY, tocolor(255,255,255), 2)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientRender&amp;quot;, root, startTheClock )&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See Also==&lt;br /&gt;
{{Utility functions}}&lt;br /&gt;
[[ru:GetTickCount]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65273</id>
		<title>RU/GetTickCount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65273"/>
		<updated>2020-02-27T11:59:14Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: /* Смотрите также */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Эта функция возвращает количество времени, которое ваша система работала в миллисекундах. Сравнивая два значения getTickCount, вы можете определить, сколько времени прошло (в миллисекундах) между двумя событиями. Это может быть использовано для определения того, насколько эффективен ваш код, или для определения времени, которое требуется игроку для выполнения задачи.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{RU/Server client function}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getTickCount ()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Вовзращает===&lt;br /&gt;
Возвращает целое число, содержащее количество миллисекунд с момента запуска системы, на которой работает сервер.&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;screenX,screenY = guiGetScreenSize()&lt;br /&gt;
function startTheClock ()&lt;br /&gt;
	&lt;br /&gt;
	if not systemUpTime then&lt;br /&gt;
            systemUpTime = getTickCount () --Store the system tick count, this will be 0 for us&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	currentCount = getTickCount ()&lt;br /&gt;
	&lt;br /&gt;
	dxDrawRectangle (screenX *.40, screenY * .09, 250, 50, tocolor(0,0,0,150))&lt;br /&gt;
	dxDrawText ( currentCount - systemUpTime, screenX * .48, screenY * .1, screenX, screenY, tocolor(255,255,255), 2)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientRender&amp;quot;, root, startTheClock )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Это запустит таймер, показываемый в верхней части экрана, отображаясь каждый кадр. Вы можете фиксировать любой конкретный момент времени, выводя переменную currentCount.&lt;br /&gt;
&lt;br /&gt;
[[en:GetTickCount]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65272</id>
		<title>RU/GetTickCount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65272"/>
		<updated>2020-02-27T11:58:27Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Эта функция возвращает количество времени, которое ваша система работала в миллисекундах. Сравнивая два значения getTickCount, вы можете определить, сколько времени прошло (в миллисекундах) между двумя событиями. Это может быть использовано для определения того, насколько эффективен ваш код, или для определения времени, которое требуется игроку для выполнения задачи.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{RU/Server client function}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getTickCount ()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Вовзращает===&lt;br /&gt;
Возвращает целое число, содержащее количество миллисекунд с момента запуска системы, на которой работает сервер.&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;screenX,screenY = guiGetScreenSize()&lt;br /&gt;
function startTheClock ()&lt;br /&gt;
	&lt;br /&gt;
	if not systemUpTime then&lt;br /&gt;
            systemUpTime = getTickCount () --Store the system tick count, this will be 0 for us&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	currentCount = getTickCount ()&lt;br /&gt;
	&lt;br /&gt;
	dxDrawRectangle (screenX *.40, screenY * .09, 250, 50, tocolor(0,0,0,150))&lt;br /&gt;
	dxDrawText ( currentCount - systemUpTime, screenX * .48, screenY * .1, screenX, screenY, tocolor(255,255,255), 2)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientRender&amp;quot;, root, startTheClock )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Это запустит таймер, показываемый в верхней части экрана, отображаясь каждый кадр. Вы можете фиксировать любой конкретный момент времени, выводя переменную currentCount.&lt;br /&gt;
&lt;br /&gt;
==Смотрите также==&lt;br /&gt;
[[en:getTickCount]]&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65271</id>
		<title>RU/GetTickCount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65271"/>
		<updated>2020-02-27T11:56:09Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Эта функция возвращает количество времени, которое ваша система работала в миллисекундах. Сравнивая два значения getTickCount, вы можете определить, сколько времени прошло (в миллисекундах) между двумя событиями. Это может быть использовано для определения того, насколько эффективен ваш код, или для определения времени, которое требуется игроку для выполнения задачи.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{RU/Server client function}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getTickCount ()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Вовзращает===&lt;br /&gt;
Возвращает целое число, содержащее количество миллисекунд с момента запуска системы, на которой работает сервер.&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;screenX,screenY = guiGetScreenSize()&lt;br /&gt;
function startTheClock ()&lt;br /&gt;
	&lt;br /&gt;
	if not systemUpTime then&lt;br /&gt;
            systemUpTime = getTickCount () --Store the system tick count, this will be 0 for us&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	currentCount = getTickCount ()&lt;br /&gt;
	&lt;br /&gt;
	dxDrawRectangle (screenX *.40, screenY * .09, 250, 50, tocolor(0,0,0,150))&lt;br /&gt;
	dxDrawText ( currentCount - systemUpTime, screenX * .48, screenY * .1, screenX, screenY, tocolor(255,255,255), 2)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientRender&amp;quot;, root, startTheClock )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Это запустит таймер, показываемый в верхней части экрана, отображаясь каждый кадр. Вы можете фиксировать любой конкретный момент времени, выводя переменную currentCount.&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
	<entry>
		<id>https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65270</id>
		<title>RU/GetTickCount</title>
		<link rel="alternate" type="text/html" href="https://wiki.multitheftauto.com/index.php?title=RU/GetTickCount&amp;diff=65270"/>
		<updated>2020-02-27T11:54:20Z</updated>

		<summary type="html">&lt;p&gt;Yoodie: Created page with &amp;quot;Эта функция возвращает количество времени, которое ваша система работала в миллисекундах. Срав...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Эта функция возвращает количество времени, которое ваша система работала в миллисекундах. Сравнивая два значения getTickCount, вы можете определить, сколько времени прошло (в миллисекундах) между двумя событиями. Это может быть использовано для определения того, насколько эффективен ваш код, или для определения времени, которое требуется игроку для выполнения задачи.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;br /&gt;
{{Server client function}}&lt;br /&gt;
==Синтаксис==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;int getTickCount ()&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Вовзращает===&lt;br /&gt;
Возвращает целое число, содержащее количество миллисекунд с момента запуска системы, на которой работает сервер.&lt;br /&gt;
==Пример==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;screenX,screenY = guiGetScreenSize()&lt;br /&gt;
function startTheClock ()&lt;br /&gt;
	&lt;br /&gt;
	if not systemUpTime then&lt;br /&gt;
            systemUpTime = getTickCount () --Store the system tick count, this will be 0 for us&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	currentCount = getTickCount ()&lt;br /&gt;
	&lt;br /&gt;
	dxDrawRectangle (screenX *.40, screenY * .09, 250, 50, tocolor(0,0,0,150))&lt;br /&gt;
	dxDrawText ( currentCount - systemUpTime, screenX * .48, screenY * .1, screenX, screenY, tocolor(255,255,255), 2)&lt;br /&gt;
end&lt;br /&gt;
addEventHandler ( &amp;quot;onClientRender&amp;quot;, root, startTheClock )&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Это запустит таймер, показываемый в верхней части экрана, отображаясь каждый кадр. Вы можете фиксировать любой конкретный момент времени, выводя переменную currentCount.&lt;/div&gt;</summary>
		<author><name>Yoodie</name></author>
	</entry>
</feed>