pg_query

(PHP 4 >= 4.2.0, PHP 5)

pg_queryВыполняет запрос

Описание

resource pg_query ([ resource $connection ], string $query )

pg_query() выполняет запрос query в заданной БД connection.

В случае ошибка функция возвращает FALSE, детали ошибки можно получить с помощью функции pg_last_error() если соединение с БД не нарушено.

Замечание: Несмотря на то, что параметр connection может быть опущен, делать так не рекомендуется, так как это может привести к трудно находимым ошибкам в скриптах.

Замечание:

Ранее данная функция называлась pg_exec(). pg_exec() все еще доступна в целях обеспечения совместимости, но лучше использовать новое имя.

Список параметров

connection

Ресурс соединения с БД PostgreSQL. Если не передать параметр connection используется соединение по умолчанию. Соединение по умолчанию -- это последнее соединение, созданное функцией pg_connect() или pg_pconnect().

query

Выражение или выражения SQL для выполнения. Если передано несколько выражений они автоматически выполняются как одна транзакция если явно не указаны команды BEGIN/COMMIT внутри выражения. Тем не менее, использовать несколько транзакий в одном вызове функции не рекомендуется.

Данные внутри запроса должны быть хорошо экранированы.

Возвращаемые значения

Ресурс результата запроса в случае успеха или FALSE в случае возникновения ошибки.

Примеры

Пример #1 Пример использования pg_query()

<?php

$conn 
pg_pconnect("dbname=publisher");
if (!
$conn) {
  echo 
"Произошла ошибка.\n";
  exit;
}

$result pg_query($conn"SELECT author, email FROM authors");
if (!
$result) {
  echo 
"Произошла ошибка.\n";
  exit;
}

while (
$row pg_fetch_row($result)) {
  echo 
"Автор: $row[0]  E-mail: $row[1]";
  echo 
"<br />\n";
}
 
?>

Пример #2 Использование нескольких выражений в pg_query()

<?php

$conn 
pg_pconnect("dbname=publisher");

// эти выражения будут исполнены в одной транзакции

$query "UPDATE authors SET author=UPPER(author) WHERE id=1;";
$query .= "UPDATE authors SET author=LOWER(author) WHERE id=2;";
$query .= "UPDATE authors SET author=NULL WHERE id=3;";

pg_query($conn$query);

?>

Смотрите также

  • pg_connect() - Открывает соединение с базой данных PostgreSQL
  • pg_pconnect() - Открывает постоянное соединение с сервером PostgreSQL
  • pg_fetch_array() - Возвращает строку результата в виде массива
  • pg_fetch_object() - Выбирает строку результата запроса и возвращает данные в виде объекта
  • pg_num_rows() - Возвращает количество строк в выборке
  • pg_affected_rows() - Возвращает количество затронутых запросом записей (кортежей)

Коментарии

$GLOBALS["PG_CONNECT"]=pg_connect(...);
....

function query ($sqlQuery,$var=0) {
   if (!$GLOBALS["PG_CONNECT"]) return 0;
   $lev=error_reporting (8); //NO WARRING!!
   $result=pg_query ($sqlQuery);
   error_reporting ($lev); //DEFAULT!!
   if (strlen ($r=pg_last_error ($GLOBALS["PG_CONNECT"]))) {
      if ($var) {
        echo "<p color=\"red\">ERROR:<pre>";
        echo $sqlQuery;
        echo "</pre>";
        echo $r;
        echo "&lt/p>";
      }
      close_db ();
      return 0;
   }
   return $result;
}
2002-10-14 08:16:45
http://php5.kiev.ua/manual/ru/function.pg-query.html
Автор:
Use pg_query to call your stored procedures, and use pg_fetch_result when getting a value (like a smallint as in this example) returned by your stored procedure.

<?php
$pgConnection 
pg_connect("dbname=users user=me");

$userNameToCheckFor "metal";

$result pg_query($pgConnection"SELECT howManyUsersHaveThisName('$userNameToCheckFor')");

$count pg_fetch_result($result0'howManyUsersHaveThisName');
?>
2004-12-01 10:07:46
http://php5.kiev.ua/manual/ru/function.pg-query.html
Автор:
One thing to note that wasn't obvious to me at first.  If your query returns zero rows, that is not a "failed" query.  So the following is wrong:
  $result=pg_query($conn, "SELECT * FROM x WHERE a=b;");
  if  (!$result) {
    echo "No a=b in x\n";
  }

pg_query returns FALSE if the query can not be executed for some reason.  If the query is executed but returns zero rows then you get back a resul with no rows.
2005-09-05 14:20:52
http://php5.kiev.ua/manual/ru/function.pg-query.html
expanding on the note left by "cmoore" -

To check to see if the recordset returned no records,

<?php
  $result
=pg_query($conn"SELECT * FROM x WHERE a=b;");
  if  (!
$result) {
    echo 
"query did not execute";
  }
 
$rs pg_fetch_assoc($result);
  if (!
$rs) {
    echo 
"0 records"
 
}
?>

-jack
2005-11-27 07:58:02
http://php5.kiev.ua/manual/ru/function.pg-query.html
Автор:
Improving upon what jsuzuki said:

It's probably better to use pg_num_rows() to see if no rows were returned, as that leaves the resultset cursor pointed to the first row so you can use it in a loop.

Example:

<?php
  $result
=pg_query($conn"SELECT * FROM x WHERE a=b;");
  if  (!
$result) {
   echo 
"query did not execute";
  }
  if (
pg_num_rows($result) == 0) {
   echo 
"0 records"
 
}
  else {
    while (
$row pg_fetch_array($result) {
     
//do stuff with $row
   
}
  }
?>

I, personally, also find it more readable.
2006-05-12 21:56:14
http://php5.kiev.ua/manual/ru/function.pg-query.html
Автор:
There was a typo in the code that I posted:

<?php
  $result
=pg_query($conn"SELECT * FROM x WHERE a=b;");
  if  (!
$result) {
   echo 
"query did not execute";
  }
  if (
pg_num_rows($result) == 0) {
   echo 
"0 records"
 
}
  else {
   while (
$row pg_fetch_array($result)) {
     
//do stuff with $row
   
}
  }
?>
2006-05-13 10:21:41
http://php5.kiev.ua/manual/ru/function.pg-query.html
It would be better this way:

<?php
  $result
=pg_query($conn"SELECT COUNT(*) AS rows FROM x WHERE a=b;");
  if  (!
$result) {
   echo 
"query did not execute";
  }
  if (
$line pg_fetch_assoc($result)) {
    if (
$line['rows'] == 0) {
     echo 
"0 records"
   
}
  }
  else {
   while (
$row pg_fetch_array($result)) {
     
//do stuff with $row
   
}
  }
?> 

This solution doesn't raise the load of the system with the move of matching rows (perhaps 0,1, perhaps 100, 1000, ... rows)
2006-05-21 11:07:22
http://php5.kiev.ua/manual/ru/function.pg-query.html
Took me a while to track this down so I thought it might be useful for others:

If you use stored procedures and need to get result sets back from them:

function dbquery($link,$query){
  pg_query($link,"BEGIN;");
  $tr=pg_query($link,$query);
  $r=pg_fetch_row($tr);
  $name=$r[0];
  $rs=pg_query($link,"FETCH ALL IN \"" . $name . "\";");
  pg_query($link,"END;");
  return $rs;
}

(Error checking removed for clarity)
2006-09-14 15:40:09
http://php5.kiev.ua/manual/ru/function.pg-query.html
A quick note for novice users: when gathering input from fields on a web form that maintains a database connection, *never* use pg_query to do queries from the field. Always sanitize input using pg_prepare and pg_execute.
2013-05-17 21:46:46
http://php5.kiev.ua/manual/ru/function.pg-query.html
Автор:
Here is my small function to make it easier for me to use data from select queries (attention, it is sensitive to sql injection)
<?php
function requestToDB($connection,$request){ 
    if(!
$result=pg_query($connection,$request)){
        return 
False;
    }
   
$combined=array();
    while (
$row pg_fetch_assoc($result)) {
       
$combined[]=$row;
    }
    return 
$combined;
}
?>

Example:
<?php
$conn 
pg_pconnect("dbname=mydatabase");

$results=requestToDB($connect,"select * from mytable");

//You can now access a "cell" of your table like this:
$rownumber=0;
$columname="mycolumn";

$mycell=$results[$rownumber][$columname];
var_dump($mycell);
2013-12-18 00:00:21
http://php5.kiev.ua/manual/ru/function.pg-query.html

    Поддержать сайт на родительском проекте КГБ