Son Serg
У кого-нить возникала проблема:
<?php
$db = pg_connect("host=localhost port=5432 dbname=MFCs user=**** password=****");
$result = pg_query($db,"SELECT * FROM doschoolweb");
?>
Соединение с БД устанавливается $db=Resource id #177.
а вот дальше пишет ошибку:
warning: pg_query() [function.pg-query]: Query failed: ERROR: relation "doschoolweb" does not exist LINE 1: SELECT * FROM doschoolweb
никак не могу ее решить...
Комментарии
Насколько подсказывает логика, relation - реляционное отношение, т.е. таблица. Таблица с таким именем не существует в текущей базе данных.
Спасибо, получилось. Таблица существовала, только PG регистрочувствительный... Там в таблице заглавные буквы были, пришлось переименовать и все заработало...
А никто не знает о чем говорит ошибка:
Wrong parameter count for pg_query()
при запросе:
$insert = pg_query($db,"INSERT INTO doschoolweb (code,surname) VALUES ('%s',%d,'%s', nextval('doschool1_seq_id'))", $form_state ['value']['r_surname']);
//r_surname - это имя текстового поля в форме.
а вы с db_query не путаете случаем?
Дословный английски перевод: неправильное число параметров. В первом случае
(code,surname)
- 2 параметра, второй случай -VALUES ('%s',%d,'%s', nextval('doschool1_seq_id'))
- 4 штуки, в третьем случае (для подстановки)$form_state ['value']['r_surname']
- 1 штука (если только это не массив третьего уровня).Должно быть 2==4==1. Это не так.
Выводы:
1) Учим SQL
2) Разве PostGre такая древняя СУБД, что она не поддерживает AUTO_INCREMENT? Меня терзают смутные сомненья, что
nextval('doschool1_seq_id')
можно не писать.Между db_query и pg_query разница в синтаксисе, как я понял небольшая. Так что можно использовать либо то, либо это.
Хорошо, я изменил запрос:
<?
$insert = pg_query($db,"INSERT INTO doschoolweb(surname) VALUES('%s')", $form['parent']['r_surname']);
?>
1==1==1 Вроде правильно.
Ошибка выходит та же самая. Неверное число параметров... SQL я только начинаю изучать, поэтому никак не могу понять как в строку запроса вставить данные из поля 'r_surname'...
ога. Только вот АПИ вы опять не читаете
В мануале по этой функции в PHP ни слова не сказано про плейсхолдеры, которые вы тут вовсю использовали. Я что-то пропустил? И кстати, действительно - почему такое упорное наклание на API Drupal?
Вообще имелось в виду - неправильное число параметров для PHP-функции. И где вы тут углядели три случая? На входе имеем один несчастный случай, и три параметра для функции, впихнутые в нее умелою рукою.
1й - $db (переменная)
2й - "INSERT INTO doschoolweb (code,surname) VALUES ('%s',%d,'%s', nextval('doschool1_seq_id'))" (строка)
3й - $form_state ['value']['r_surname'] (переменная)
фун_кци_я(параметр1, параметр2, параметр3);
Выдержку из мануала по pq_query я уже приводил, там-же и ясно написано, сколько и каких параметров данная функция принимает в себя.
Какие еще могут быть интерпретации и разночтения? Ну если только вольные. Выводы: учим похапе -)