Обновление строки в PostgreSQL с помощью PHP - PullRequest
2 голосов
/ 01 апреля 2012

Мне было интересно, каков был синтаксис в PHP для обновления строки в базе данных PostgreSQL.Я создал страницу входа, которая проверяет имя пользователя и пароль из базы данных, а затем переходит на страницу, где отображаются все данные пользователя из базы данных для этого имени пользователя.Я пытаюсь разрешить пользователю изменять некоторые столбцы, например пароль, имя и т. Д. Поэтому я добавил еще одну страницу, в которой есть поля для каждого столбца, который я хочу изменить.

Это код, который яесть для запроса:

if(array_key_exists('save',$_POST))
{
$firstname=$_POST['ifirstname'];
$lastname=$_POST['ilastname'];
$email=$_POST['iemail'];
$password=$_POST['ipassword'];

    $conn_string='host=#### port=#### dbname=###### user=####### password=######';
    $dbconn=pg_connect($conn_string) or die('Connection failed');

$query="UPDATE project.customer SET FirstName='$firstname',
LastName='$lastname',Email='$email',Password='$password')
    WHERE UserName=$1";

    $result=pg_query($dbconn,$query);
    $row_count= pg_num_rows($result);
            pg_free_result($result);
        pg_close($dbconn);
   }

Это для полей:

    <div id="header">UPDATE USER INFO</div>
    <form id="testform" name="testform" method="post" action="" >
        <p> <label for="ifirstname">First Name:</label> 
          <input name="ifirstname" type="text" id="ifirstname"/>
      </p>
        <p> <label for="ilastname">Last Name:</label>
          <input name="ilastname" type="text" id="ilastname"/>
      </p>
        <p> <label for="iemail">E-Mail:</label>
            <input name="iemail" type="text" id="iemail"/>
        </p>
        <p> 
            <label for="ipassword">Password:</label>
          <input name="ipassword" type="password" id="ipassword"/>
      </p>
        <p> 
            <label for="iconfpass">Confirm Password:</label>
          <input name="iconfpass" type="password" id="iconfpass"/>
      </p>
        <p> 
            <input type="submit" name="save" value="Register"/>
        </p>
    </form>

Ответы [ 2 ]

1 голос
/ 01 апреля 2012

Я думаю, что так и должно быть. Также заставьте пользователя писать старый пароль при изменении данных в целях безопасности. Также не забудьте отфильтровать данные перед использованием в запросе, чтобы избежать атак с использованием SQL-инъекций

$query="UPDATE project.customer 
        SET (FirstName,LastName,Email,Password) = 
        ('$firstname','$lastname','$email','$password')
        WHERE UserName= '$1' and Password = '$oldpassword'";
0 голосов
/ 01 апреля 2012

Почему бы просто не использовать стандартный синтаксис SQL?

Update project.customer Set
    "FirstName" = '$firstname',
    ...
Where ...

Основное отличие Postgres состоит в том, что вы обычно цитируете имена столбцов.

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