[英]Unable to Migrate Database (tried MySQL and PostgreSQL) on Heroku
[英]Migrate to Postgresql
我已經嘗試了好幾天,但無法解決我的問題。 我聲明我開始在Mysql上創建自己的網頁,並且效果很好。 我不得不遷移到Postgres,問題就從這里開始。
例如:
我有這個錯誤:
致命錯誤:未捕獲錯誤:對C:\\ xampp \\ input.php:39中的字符串調用成員函數query()堆棧跟蹤:#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為資源,第5行的C:\\ xampp \\ htdocs \\ PhpProject1 \\ select.php中給出的對象
警告:pg_num_rows()期望參數1為資源,第18行的C:\\ xampp \\ htdocs \\ PhpProject1 \\ select.php中給出的null
<?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)
{
我怎么解決這個問題?? 謝謝
$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
UPDATE
我剛剛注意到,您沒有使用$dbconn
。 嘗試更改:
$prenotato = $conn_string->query($checkdata)->pg_fetch_row()[0];
至
$prenotato = $dbconn->query($checkdata)->pg_fetch_row()[0];
無論如何,請檢查PDO,它更安全,並且更易於使用。
由於您的第一個問題已得到回答,並且您切換到PDO,因此我將回答您的后續問題。
由於您現在正在使用PDO,因此無法使用pg_*
方法。 您現在需要使用PDO方法。 有關如何使用它們的更多信息,請參見PDO :: query文檔。
這應該與您的查詢一起使用:
$rows = $dbh->query($sql);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.