(PECL CUBRID >= 8.3.1)
cubrid_query — Отправка запроса CUBRID
Функция cubrid_query() посылает уникальный запрос (множественные
запросы не поддерживаются) текущей активной базе данных, заданной идентификатором
соединения conn_identifier
.
query
SQL-запрос
Данные в запросе должны быть корректно экранированы.
conn_identifier
Идентификатор соединения. Если не задано, то будет использовано последнее, открытое с помощью cubrid_connect() соединение.
Для SELECT, SHOW, DESCRIBE, EXPLAIN и прочих запросах, возвращающих результирующий
набор, cubrid_query() возвращает resource в случае
успешного выполнения и false
в случае возникновения ошибки.
Для прочих типов SQL-запросов, INSERT, UPDATE, DELETE, DROP и т.д,
cubrid_query() возвращает true
или false
в зависимости от
успешности выполнения.
Возвращённый результат можно передавать в функцию cubrid_fetch_array() и ей подобные для работы с полученными данными.
Используйте cubrid_num_rows() для определения количества возвращённых оператором SELECT строк или cubrid_affected_rows() для определения количества затронутых строк, для запросов изменяющих данные, таких как DELETE, INSERT, REPLACE и UPDATE.
cubrid_query() также может завершиться с ошибкой и вернуть false
,
если пользователь не имеет прав на доступ к таблице, используемой в запросе.
Пример #1 Некорректный запрос
Следующий запрос содержит синтаксическую ошибку, так что
cubrid_query() вернёт false
.
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb');
$result = cubrid_query('SELECT * WHERE 1=1');
if (!$result) {
die('Некорректный запрос: ' . cubrid_error());
}
?>
Пример #2 Корректный запрос
Следующий запрос корректен, так что cubrid_query() вернёт resource.
<?php
// Какие нибудь значения
$firstname = 'fred';
$lastname = 'fox';
$conn = cubrid_connect('localhost', 33000, 'demodb');
cubrid_execute($conn,"DROP TABLE if exists friends");
cubrid_execute($conn,"create table friends(firstname varchar,lastname varchar,address char(24),age int)");
cubrid_execute($conn,"insert into friends values('fred','fox','home-1','20')");
cubrid_execute($conn,"insert into friends values('blue','cat','home-2','21')");
// Сформулируем запрос
// Это лучший путь для выполнения запроса
// Другие примеры смотрите cubrid_real_escape_string()
$query = sprintf("SELECT firstname, lastname, address, age FROM friends WHERE firstname='%s' AND lastname='%s'",
cubrid_real_escape_string($firstname),
cubrid_real_escape_string($lastname));
// Выполняем запрос
$result = cubrid_query($query);
// Проверяем результат
// Показывает сам запрос и ошибку. полезно при отладке.
if (!$result) {
$message = 'Некорректный запрос: ' . cubrid_error() . "\n";
$message .= 'Всего запросов: ' . $query;
die($message);
}
// Используем результат
// Попытка распечатать $result не позволит получить доступ к информации в ресурсе
// Должна быть использована одна из функций cubrid
// Смотрите cubrid_result(), cubrid_fetch_array(), cubrid_fetch_row() и т.д.
while ($row = cubrid_fetch_assoc($result)) {
echo $row['firstname'];
echo $row['lastname'];
echo $row['address'];
echo $row['age'];
}
// Освобождаем ресурсы. В принципе можно и не делать, так как
// они будут автоматически освобождены после завершения работы скрипта
cubrid_free_result($result);
?>