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