создание оповещения для определенной строки 1, а не удаление из базы данных postgre - PullRequest
0 голосов
/ 07 мая 2011

У меня есть такая таблица пользователя: -

               guid                | username |             password             | firstname | lastname  | location | emailaddress |   userrole
-----------------------------------+----------+----------------------------------+-----------+-----------+----------+--------------+---------------
 8024259764dc3e8ee0fb6f5.84107784  | james    | 827ccb0eea8a706c4c34a16891f84e7b | james     | bond      | NY       | ny@live.com  | administrator
 18689183644dc3e91571a364.71859328 | saty     | 250cf8b51c773f3f8dc8b4be867a9a02 | saty      | john      | NY       | hk@fd.com    | administrator
 2644885344cecd6f2973b35.63257615  | admin    | 21232f297a57a5a743894a0e4a801fc3 | System    | Generated |          |              | administrator
(3 rows)

теперь мой postgre запрос на удаление строки ....

$query = "delete from users where username!= 'admin' and guid='".$guid."'";
    $result = pg_query($conn, $query);

        ?>
        <script type="text/javascript">
                alert("Cannot delete this .\n It is system generated(s).");
            </script>       
      <?php

когда кто-то пытается удалить имя пользователя с моей страницы userlist.php .. это предупреждение генерируется только для администратора и продолжается на этой странице ... а также администратор никогда не удаляет его по умолчанию ... в противном случае удалить данные из базы данных, кроме администратора помоги мне

Ответы [ 2 ]

2 голосов
/ 07 мая 2011

Почему бы не поискать имя пользователя для $guid до , когда вы пытаетесь удалить что-либо, просто небольшой кусочек SQL, подобный этому:

$query = "select username from users where guid = '" . $guid . "'";
# Execute this, pull out the username, and see if it is "admin".

Тогда, если username"admin", показать ваше предупреждение;если username не «admin», удалите его.Вы, кажется, пытаетесь делать слишком много разных вещей одновременно, когда вы должны делать что-то по одному, нет ничего плохого в том, чтобы делать два запроса, когда вам нужно сделать две разные вещи.

И янадеюсь, что вы где-нибудь очистите и процитируете $guid, чтобы предотвратить проблемы с внедрением SQL.

0 голосов
/ 07 мая 2011

Вы можете использовать pg_affered_rows для запроса, сколько строк было фактически удалено.Когда он равен нулю, вы уверены, что guid существовал, это должно быть потому, что guid принадлежал администратору.

if (pg_affected_rows($result)) {
    ?>
        <script type="text/javascript">
                alert("Cannot delete this .\n It is system generated(s).");
        </script>       
    <?php
}

Лично я бы выбрал дизайн, в котором у вас есть суперпользователь с фиксированным guid, например 0 или 1так что у вас нет теста и полагаться на имя.Что происходит, когда пользователь использует имя admin или успешно меняет свое имя на admin из-за ошибки где-то?

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