Обновление определенной области таблицы в postgresql - PullRequest
0 голосов
/ 02 апреля 2010

ОК. Я пытаюсь обновить определенную область таблицы в postgresql

Я хочу, чтобы он нашел пользователя, который соответствует таблице

, а затем обновить имеющуюся у меня информацию

как в этом случае электронная почта - это имя пользователя, которое нужно искать.

необходимо добавить в такие области, как $ aboutSelf, $ hobbies, $ music, $ tv, $ sports

так что я понятия не имею, как это сделать. LOL ^. ^ Я знаю только, как добавлять вещи с нуля. как создать несуществующего пользователя

CREATE TABLE chatterprofileinfo(
    Id SERIAL,
    email VARCHAR(255) NOT NULL PRIMARY KEY,
    aboutSelf VARCHAR(255),
    hobbies VARCHAR(255),
    music VARCHAR(255),
    tv VARCHAR(255),
    sports VARCHAR(255),
    lastLogin DATE
);

PHP, который я сейчас использую

<?php

$error=false;

$aboutSelfError="";
$hobbiesError="";
$musicError="";
$tvError="";
$sportsError="";

if($_SERVER["REQUEST_METHOD"] == "GET") {

    $aboutSelf="";
    $hobbies="";
    $music="";
    $tv="";
    $sports="";
    $error=false;

}
else if($_SERVER["REQUEST_METHOD"] == "POST") {

    $error=false;

    $aboutSelf=trim($_POST["aboutSelfTA"]);
    $hobbies=trim($_POST["hobbiesTA"]);
    $music=trim($_POST["musicTA"]);
    $tv=trim($_POST["tvTA"]);
    $sports=trim($_POST["sportsTA"]);

    if(strlen($aboutSelf)>255) {

        $aboutSelfError="Maximum of 255 characters please shorten";

        $error=true;

    }

    if(strlen($hobbies)>255) {

        $hobbiesError="Maximum of 255 characters please shorten";

        $error=true;

    }

    if(strlen($music)>255) {

        $musicError="Maximum of 255 characters please shorten";

        $error=true;

    }

    if(strlen($tv)>255) {

        $tvError="Maximum of 255 characters please shorten";

        $error=true;

    }

    if(strlen($sports)>255) {

        $sportsError="Maximum of 255 characters please shorten";

        $error=true;

    }

}

?>

Ответы [ 2 ]

2 голосов
/ 02 апреля 2010

см. http://www.postgresql.org/docs/8.1/static/sql-update.html

UPDATE
  users
SET
  aboutSelf='...',
  hobbies='...',
  music='...',
  tv='...',
  sports='...'
WHERE
  email='something'

edit: автономный пример с использованием pg_prepare () :

$pg = pg_connect("dbname=test user=localonly password=localonly");
if ( !$pg ) {
  die('connect failed ');
}

// create a temporary/test table
pg_query($pg, '
  CREATE TEMPORARY TABLE tmpchatter (
    id SERIAL, 
    email varchar,
    aboutSelf varchar,
    hobbies varchar,
    UNIQUE (email)
  )
');

// fill in some test data
pg_query("INSERT INTO tmpchatter(email, aboutSelf, hobbies) VALUES ('emailA','aboutA','hobbiesA')") or die(pq_last_error($pg));
pg_query("INSERT INTO tmpchatter(email, aboutSelf, hobbies) VALUES ('emailB','aboutB','hobbiesB')") or die(pq_last_error($pg));
pg_query("INSERT INTO tmpchatter(email, aboutSelf, hobbies) VALUES ('emailC','aboutC','hobbiesC')") or die(pq_last_error($pg));

// let's see what we've got so far
$result = pg_query('SELECT email,aboutSelf,hobbies FROM tmpchatter') or die(pq_last_error($pg));
echo "query result #1:\n";
while ( false!==($row=pg_fetch_row($result)) ) {
  echo join(', ', $row), "\n";
}

// now let's update a specific record
// the "interesting" part

// first the parameters we want to use
$email = 'emailB';
$about = 'about me....';
$hobbies = 'breathing, eating';

// prepare the statement. Put placeholders where you want to "insert" parameters
pg_prepare($pg, '', '
  UPDATE
    tmpchatter
  SET
    aboutSelf = $1,
    hobbies = $2
  WHERE
    email = $3
') or die(pg_last_error());

// execute the statement + provide the parameters
// With prepared statements you don't have to worry about escaping the values to avoid sql injections
pg_execute($pg, '', array($about, $hobbies, $email)) or die(pg_last_error());

// let's check the result
$result = pg_query('SELECT email,aboutSelf,hobbies FROM tmpchatter') or die(pq_last_error($pg));
echo "query result #2:\n";
while ( false!==($row=pg_fetch_row($result)) ) {
  echo join(', ', $row), "\n";
}

печать

query result #1:
emailA, selfA, hobbiesA
emailB, selfB, hobbiesB
emailC, selfC, hobbiesC

query result #2:
emailA, selfA, hobbiesA
emailC, selfC, hobbiesC
emailB, about me...., breathing, eating
2 голосов
/ 02 апреля 2010

Использовать запрос ОБНОВЛЕНИЕ ?

Я использую W3schools.com для большинства своих ссылок на SQL. Очень удобный сайт!

Может быть слишком обобщенным ответом, но не может обойтись без схемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...