Миграция в Postgresql - PullRequest
       2

Миграция в Postgresql

0 голосов
/ 02 октября 2018

Я пытался в течение нескольких дней, но я не могу решить свою проблему.Я заявляю, что я начал создавать свою собственную веб-страницу на Mysql, и она отлично работает.Мне пришлось перейти на Postgres, и проблемы начались здесь.

Например, там:

У меня есть эта ошибка:

Неустранимая ошибка: Uncaught Error: Call toзапрос функции-члена () для строки в C: \ xampp \ input.php: 39 трассировки стека: # 0 {main}

$checkdata = "SELECT count(*) as prenotato
  FROM Prenotazione
 WHERE data='$data'
   AND NOT ('$newTimeEnd' < orario_inizio OR orario_fine < '$orario_inizio')";

$prenotato = $conn_string->query($checkdata)->pg_fetch_row()[0];

это файл config.php, который я использовал:

<?php

$conn_string = "host=localhost port=5432 dbname=postgres user=postgres password=123456789";
$dbconn = pg_connect($conn_string);

?>

РЕДАКТИРОВАТЬ.

Я следую вашим советам:

config.php

<?php 
$dbname = "postgres";
$host = "localhost";
$username = "postgres";
$dbh = new PDO("pgsql:dbname=$dbname;host=$host", $username, 123456789 ); 
?> 

Например, у меня есть другая проблема с похожей ошибкой:

Предупреждение: pg_query () ожидает, что параметр 1 будет ресурсом, объект указан в C: \ xampp \ htdocs \ PhpProject1 \ select.php в строке 5

Предупреждение: pg_num_rows () ожидает, что параметр 1 будет ресурсом, значение NULL указано в C: \ xampp \ htdocs \ PhpProject1 \ select.php в строке 18

<?php  
 require ('config.php');
 $output = '';  
 $sql = "SELECT * FROM Prenotazione where data = CURRENT_DATE()"; 
 $result = pg_query($dbh, $sql);  
 $output .= '  
      <div class="table-responsive">  
           <table class="table table-bordered">  
                <tr>  

                     <th width="10%">Nominativo</th>  
                     <th width="20%">Data</th> 
                     <th width="5%">Orario Inizio</th>
                     <th width="5%">Orario Fine</th>
                     <th width="5%">Email</th>
                     <th width="50%">Oggetto</th>
                </tr>';  
 $rows = pg_num_rows($result);
 if($rows > 0)  
 {  

Как я могу решить эту проблему ??Спасибо тебе

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Поскольку ваша первая проблема уже решена, и вы переключились на PDO, я отвечу на ваш дополнительный вопрос.

Поскольку вы сейчас используете PDO, вы не можете использовать методы pg_*.Вам нужно использовать методы PDO сейчас.См. Документацию для PDO :: query для получения дополнительной информации о том, как их использовать.

Это должно работать с вашим запросом:

$rows = $dbh->query($sql);
0 голосов
/ 02 октября 2018

$conn_string - это строка, а не объект, поэтому вы не можете вызывать какие-либо методы для нее!Даже имя переменной говорит вам об этом!

Вы уверены, что не хотели создавать новое соединение PDO, используя эту строку?

Ваша строка должна быть такой, как в этом примере:

$postgresDsn = 'pgsql:host=localhost;port=5432;dbname=testdb;user=someone;password=mypass'

$db = new PDO($postgresDsn, $user, $password);

Проверьте документы для PDO здесь:

http://php.net/manual/en/pdo.construct.php

Кроме того, специальные инструкции для postgres:

https://secure.php.net/manual/en/ref.pdo-pgsql.connection.php

ОБНОВЛЕНИЕ

Я только что заметил, вы не используете $dbconn.Попробуйте изменить:

$prenotato = $conn_string->query($checkdata)->pg_fetch_row()[0];

на

$prenotato = $dbconn->query($checkdata)->pg_fetch_row()[0];

В любом случае, проверьте PDO, это более безопасно и с ним легче работать.

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