PHP.mk документација

pg_query

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

function.pg-query.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека function.pg-query.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
pg_query

Референца за `function.pg-query.php` со подобрена типографија и навигација.

function.pg-query.php

pg_query

(PHP 4 >= 4.2.0, PHP 5, PHP 7, PHP 8)

pg_queryИзврши барање

= NULL

pg_query(PgSql\Connection $connection = ?, string $query): PgSql\Result|false

pg_query() извршува query на наведената база на податоци connection. pg_query_params() треба да се претпочита во повеќето случаи.

Ако се појави грешка, и false се враќа, деталите за грешката може да се добијат со користење на pg_last_error() функција ако врската е валидна.

Забелешка: Иако connection може да се изостави, не се препорачува, бидејќи може да биде причина за тешко откривање грешки во скрипти.

Забелешка:

Оваа функција порано се нарекуваше pg_exec(). pg_exec() сè уште е достапна од причини за компатибилност, но корисниците се охрабруваат да го користат новиот назив.

Параметри

connection

Еден PgSql\Connection инстанца. Кога connection не е наведено, се користи стандардната врска. Стандардната врска е последната врска направена од pg_connect() or pg_pconnect().

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Од PHP 8.1.0, користењето на стандардната врска е застарено.

query

SQL исказот или исказите што треба да се извршат. Кога повеќе искази се поминуваат на функцијата, тие автоматски се извршуваат како една трансакција, освен ако немаат експлицитни команди BEGIN/COMMIT вклучени во низата на барањето. Сепак, не се препорачува користење повеќе трансакции во еден повик на функцијата.

Ги ескејпува специјалните знаци во стринг за употреба во SQL изјава

Интерполацијата на низи од податоци што ги внесува корисникот е исклучително опасна и веројатно ќе доведе до SQL инјекција ранливости. Во повеќето случаи pg_query_params() треба да се претпочита, поминувајќи ги вредностите што ги внесува корисникот како параметри наместо да ги заменувате во низата на барањето.

Сите податоци што ги внесува корисникот, директно заменети во низата на барањето, треба да бидат Податоците во барањето треба да бидат.

Вратени вредности

Еден PgSql\Result инстанца при успех, или false при неуспех.

Дневник на промени

Верзија = NULL
8.1.0 Враќа PgSql\Result инстанца сега; претходно, а resource .
8.1.0 На connection параметарот очекува PgSql\Connection инстанца сега; претходно, а resource се очекуваше.

Примери

Пример #1 pg_query() example

<?php

$conn
= pg_pconnect("dbname=publisher");
if (!
$conn) {
echo
"An error occurred.\n";
exit;
}

$result = pg_query($conn, "SELECT author, email FROM authors");
if (!
$result) {
echo
"An error occurred.\n";
exit;
}

while (
$row = pg_fetch_row($result)) {
echo
"Author: $row[0] E-mail: $row[1]";
echo
"<br />\n";
}

?>

Пример #2 Користење pg_query() со повеќе искази

<?php

$conn
= pg_pconnect("dbname=publisher");

// these statements will be executed as one transaction

$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() - Враќа број на погодени записи (кортежи)

Белешки од корисници 9 белешки

mentat at azsoft dot pl
пред 23 години
$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;
}
a dot mcruer at live dot com
12 години пред
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.
jsuzuki at spamcop dot net
20 години пред
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
zoli at makettinfo.hu
19 години пред
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)
cmoore
20 години пред
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.
mankyd
19 години пред
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
   }
  }
?>
Акбар
21 години пред
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($result, 0, 'howManyUsersHaveThisName');
?>
mankyd
19 години пред
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.
Анонимен
12 години пред
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);
Навигација

Прелистувај сродни теми и функции.

На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.