Php 迁移到Postgresql

Php 迁移到Postgresql,php,postgresql,Php,Postgresql,我已经试了好几天了,但我解决不了我的问题。 我声明我开始在Mysql上创建我自己的网页,它工作得非常好。我不得不转到博士后,问题就从这里开始 例如: 我有一个错误: 致命错误:未捕获错误:调用上的成员函数查询 C:\xampp\input.php中的字符串:39堆栈跟踪:0 {main} 这是我使用的config.php文件: <?php $conn_string = "host=localhost port=5432 dbname=postgres user=postgres pass

我已经试了好几天了,但我解决不了我的问题。 我声明我开始在Mysql上创建我自己的网页,它工作得非常好。我不得不转到博士后,问题就从这里开始

例如:

我有一个错误:

致命错误:未捕获错误:调用上的成员函数查询 C:\xampp\input.php中的字符串:39堆栈跟踪:0 {main}

这是我使用的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_查询要求参数1为给定的资源、对象 在第5行的C:\xampp\htdocs\PhpProject1\select.php中

警告:pg_num_rows期望参数1为资源,给定为null 在第18行的C:\xampp\htdocs\PhpProject1\select.php中

我怎样才能解决这个问题?? 谢谢你

$conn_string是一个字符串,不是一个对象,所以你不能对它调用任何方法!即使是变量名也告诉您这一点

你确定你不是想用这个字符串创建一个新的PDO连接吗

您的字符串应如下示例所示:

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

$db = new PDO($postgresDsn, $user, $password);
在此处检查PDO的文档:

此外,针对博士后的具体说明:

更新

我刚刚注意到,您没有使用$dbconn。尝试更改:

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


无论如何,请检查PDO,它更安全,更易于使用。

因为您的第一个问题已经得到解答,您切换到PDO,我将回答您的后续问题

由于您现在使用的是PDO,因此无法使用pg_*方法。您现在需要使用PDO方法。有关如何使用它们的更多信息,请参阅文档

这应该适用于您的查询:

$rows = $dbh->query($sql);

我不需要做连接?就像我做的那样?这是使用PDO创建连接的更好方法。试试看@德尔博伊1987英国好的,谢谢你。你能再帮我一次吗??我编辑我的第一篇文章!
$prenotato = $conn_string->query($checkdata)->pg_fetch_row()[0];
$prenotato = $dbconn->query($checkdata)->pg_fetch_row()[0];
$rows = $dbh->query($sql);