Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблемы с insert 
V
    Опции темы
Ytkonos
Дата 28.4.2010, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 15.10.2004
Где: MO

Репутация: нет
Всего: нет



Есть такой код:
Код

<html>
<body>
</body>
<table>
            <tr    align="center" valign = "middle">
              <form    name = "data" action = "<? echo $_SERVER['PHP_SELF']?>" method="POST">
                <td><INPUT    type = "hidden" name = "id"></td>
                <td><INPUT    type = "text" name = "name"></td>
                <td><INPUT    type = "text" name = "floor"></td>
                <td><INPUT    type = "text" name = "corps"></td>
                <td><INPUT    type = "text" name = "department"></td>
                <td><INPUT    type = "submit"    value = "Добавить"   onclick = "check_correction();"></td>
              </form>
            </tr>
</table>
        <?php
        $dbconn = pg_connect("host=localhost dbname=aud user=postgres password= ") 
               or die('Could not connect: ' . pg_last_error());
        $query="INSERT INTO aud VALUES ('".$id."', '".$name."', '".$floor."', '".$corps."', '".$department."')";
        var_dump($query);
        $result= pg_query($dbconn,$query) 
        or die('Query failed: ' . pg_last_error());
        
        ?>
</html>


но на странице выпадает ошибка:
Код

Query failed: ERROR: invalid input syntax for integer: "" LINE 1: INSERT INTO aud VALUES ('', '', '', '', '') ^


Если просто вбивать "руками" данные:
Код

$query="INSERT INTO aud VALUES (9,6453, 3214, 64, 112)";

То все нормально сохраняется.

Такой вариант:
Код

$query="INSERT INTO aud VALUES (9,'$name', '$floor', '$corps', '$department')";

Тоже выдает ошибку:
Код

Query failed: ERROR: invalid input syntax for integer: "" LINE 1: INSERT INTO aud VALUES (9,'', '', '', '') ^


Еще такой вариант пробовал:
Код

$query='INSERT INTO aud VALUES (9,'.intval($name).', '.intval($floor).', '.intval($corps).', '.intval($department).')';


В айди сохраняется значение, а все остальное равно нулю.

Непонятно, толи значение из инпута не передается в бд, толи сам запрос неправильно составлен (проблема с кавычками=)
PM WWW ICQ   Вверх
azesmcar
Дата 28.4.2010, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



это тебе не MySQL, тут с типами дела обстоят строже, ты заносишь integer в виде string, убери кавычки.

Добавлено через 1 минуту и 5 секунд
Код

$query="INSERT INTO aud VALUES (9,$name, $floor, $corps, $department)";

вот так, если это все int-ы конечно.

Это сообщение отредактировал(а) azesmcar - 28.4.2010, 12:00
PM   Вверх
Ytkonos
Дата 28.4.2010, 12:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 15.10.2004
Где: MO

Репутация: нет
Всего: нет



такую ошибку пишет:
Код

Query failed: ERROR: syntax error at or near "," LINE 1: INSERT INTO aud VALUES (79,, , , ) ^

PM WWW ICQ   Вверх
azesmcar
Дата 28.4.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 1
Всего: 211



Цитата(Ytkonos @  28.4.2010,  12:19 Найти цитируемый пост)
такую ошибку пишет:

а ты посмотри что ты сгенерировал, ты туда пустые значение подставил и в итоге получил запрос в виде
Код

$query="INSERT INTO aud VALUES (79,, , , )";

Это уже проблема в PHP коде.

Добавлено через 1 минуту и 57 секунд
Цитата(Ytkonos @  28.4.2010,  11:54 Найти цитируемый пост)
В айди сохраняется значение, а все остальное равно нулю.

это потому что intval('') возвращает 0.

Добавлено через 4 минуты и 36 секунд
Ytkonos

Посмотрел PHP код и понял твою проблему.
видимо ты всегда работал с register globals = on. Никогда так не делай. Это здоровенная дыра в безопасности.

Бери POST аргументы вот так
Код

$_POST['name'], $_POST['floor'] ...

PM   Вверх
Ytkonos
Дата 28.4.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 15.10.2004
Где: MO

Репутация: нет
Всего: нет



azesmcar, спасибо, работает =)
PM WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.1051 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.