|
Программирование >> Программный интерфейс приложений
unsigned int mYsql escape string (char *to str, char *from str, unsigned int from len) Преобразует заданную строку, которая может содержать специальные символы, что позволяет использовать эту строку в качестве оператора SQL. Допустимые специальные символы, а также их кодировки представлены в табл. Е.6. Таблица Е.6. Кодировка специальных символов функции mysql escape string() Специальный символ Кодировка NULL (ASCII 0) \0 (обратная косая черта+ 0 , но не обратная косая чер- та и ноль) Обратная косая черта \\ (обратная косая черта - обратная косая черта) Одинарная кавычка Y (обратная косая черта - одинарная кавычка) Двойные кавычки \ (обратная косая черта - двойные кавычки) Переход на новую \п (обратная косая черта - п ) строку Возврат каретки \г (обратная косая черта - г ) <Ctrl+Z> \Z (обратная косая черта - Z ) Кодируемый буфер задается как строка определенной длины. Нг этот буфер указывает аргумент f romstr, а число разрядов в нем задается аргументом from len. Функция mysql escape string () записывает результат в буфер, определенный аргументом to str, н добавляет нулевой разряд. Аргумент to str должен указывать на существующий буфер длиной не менее (f rom len*2)+l байт. (В наихудшем случае для кодирования каждого символа буфера f romstr может потребоваться двухсимвольная последовательность, а также место для завершающего символа NULL.) Функция mysql escape string () возвращает длину закодированной строки без учета завершающего нулевого байта. Результирующая закодированная строка не содержит внутренних нулей, однако завершается NULL, что позволяет использовать ее с такими функциями, как strlen () или strcat (). Записывая буквенную строку в программу, следует проявлять осторожность, чтобы полученная в результате кодирования функцией mysql escape string () строка не бьша ошибочно воспринята из-за лексикографических соглашений языка программирования С. Рассмотрим, например, следующую строку и выводимый результат функции: to len = mysql escape string (to str, \0\\\\ \n\r\032 , 7); printf ( to len = %cl, to str = %s\n , to len, to str) Результатом этого кода станет следующая строка: to len = 14, to str = \0\\\\ \n\r\Z Выведенное в буфер tostr значение очень похоже на строку второго аргумента функции mysql escape string {), однако в действительности отличается от него. int mysql query (mysql *conn, char *query string); Считывая запрос, представленный в виде строки, заверщающейся null, функция mysql query О отправляет его на сервер для выполнения. Заданная строка запроса не должна включать двоичные данные, в частности, пустые байты, которые интерпретируются функцией mysql query () как заверщение строки запроса. Если запрос все же включает двоичные данные, для его выполнения следует воспользоваться функцией mysql real query (). Запрос может включать только один оператор SQL и не должен за-верщаться точкой с запятой ( ; ) или последовательностью \д . (Эти последовательности распознаются клиентской программой mysql, но не клиентской библиотекой.) Функция mysql query () возвращает ноль в случае успещного выполнения запроса и ненулевое значение при возникновении ошибки. Успешным считается запрос, который сервер принял как допустимый и выполнил без ошибок. Успех не зависит от числа обработанных или возвращенных строк. int mysql real query (mysql *conn, char *query string, unsigned int length) ; Считывая запрос, представленный в виде строки фиксированной длины, функция mysql real query () отправляет его на сервер для выполнения. Строка запроса может содержать двоичные данные (включая пустые байты). Его текст определяется указателем query string, а длина задается аргументом length. Запрос может включать только один оператор SQL и не должен завершаться точкой с запятой ( ; ) или последовательностью \д . (Эти последовательности распознаются клиентской программой mysql, но не клиентской библиотекой.) Функция mysql real query () возвращает ноль в случае успешного выполнения запроса и ненулевое значение при возникновении ошибки. Успешным считается запрос, который сервер принял как допустимый и выполнил без ошибок. Успех не зависит от числа обработанных или возвращенных строк, int mysql select db (mysql *conn, char *db name); Устанавливает базу данных, заданную аргументом dbname, как текущую. Эта база впоследствии используется по умолчанию для всех ссылок на таблицы, определенные без спецификатора базы данных. Применяющий эту функцию пользователь должен обладать полномочиями на доступ к базе данных, иначе функция mysql select db {) не завершит успешно свою работу. Функция mysql select db() возвращает ноль в случае успешного выполнения и ненулевое значение при возникновении ошибки. Функции обработки результирующих наборов После создания запросом результирующего набора специальные функции, описанию которых и посвящен этот раздел, позволяют произвести выборку этого результата и получить к нему доступ. Создают результирующий набор функции mysql store result () и mysql use result () , поэтому одну из них необходимо обязательно вызвать перед использованием описанных далее функций. Сравнение функций mysql store result О и mysql use result () представлено в табл. Е.7. Таблица Е.7. Сравнение функций mysql store result () и mysql use result() Функция mysql store result () Функция mysl use result () Bee строки из результирующего набора выбираются собственно функцией mysql store result() Требует больше памяти, поскольку все строки хранятся в памяти компьютера-клиента Работает медленней из-за переполнения, связанного с выделением памяти для всего результирующего набора Возвращаемое функцией mysql fetch row () значение NULL указывает на завершение результирующего набора и не используется для отображения ошибки Функция mysql num rows () может вызываться в любой момент после вызова функции mysql store result {) Функция mysql use result() инициализирует результирующий набор, а выборка строк выполняется функцией mysql f etch row {) Использует меньше памяти, поскольку записывается по одной строке Работает быстрее, поскольку память необходимо выделять для хранения только текущей строки Возвращаемое функцией mysql fetch row() значение NULL указывает на завершение результирующего набора или наличие ошибки, поскольку сбой при обмене данными может привести к остановке операции выборки записей Функция mysql num rows () возвратит правильное число строк только после выборки всех строк
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |