【问题标题】:PHP: Translating MySQL to PostgresqlPHP:将 MySQL 转换为 Postgresql
【发布时间】:2016-04-05 02:12:28
【问题描述】:

我需要将 PHP 中的以下 MySQL 语句翻译成 Postgresql

Config.php 文件

MySQL

$mysqli = new mysqli($db_host, $db_username, $db_password, $db_name);

我试过了:(Postgresql)

$db = pg_connect($db_host, $db_username, $db_password, $db_name);

MySQL:

$get_total_rows = 0;
$results = $mysqli->query("SELECT COUNT(*) FROM menu");

if($results){
$get_total_rows = $results->fetch_row(); 
}
//break total records into pages
$total_groups= ceil($get_total_rows[0]/$items_per_group);

我试过:(Postgresql)我不知道我是否真的需要改变任何东西,我只是改变了我的变量的名称,因为它在我的 config.php 文件中有所不同

$get_total_rows = 0;
$results = $db->query("SELECT COUNT(*) FROM menu");

if($results){
$get_total_rows = $results->fetch_row(); 
}
//break total records into pages
$total_groups= ceil($get_total_rows[0]/$items_per_group);

MySQL

if($_POST)
{
//sanitize post value
$group_number = filter_var($_POST["group_no"], FILTER_SANITIZE_NUMBER_INT, FILTER_FLAG_STRIP_HIGH);

//throw HTTP error if group number is not valid
if(!is_numeric($group_number)){
    header('HTTP/1.1 500 Invalid number!');
    exit();
}

//get current starting point of records
$position = ($group_number * $items_per_group);


//Limit our results within a specified range. 
$results = $mysqli->prepare("SELECT id, name, message FROM paginate ORDER BY id ASC LIMIT $position, $items_per_group");
$results->execute(); //Execute prepared Query
$results->bind_result($id, $name, $message); //bind variables to prepared statement


echo '<ul class="page_result">';
while($results->fetch()){ //fetch values
    echo '<li id="item_'.$id.'"><span class="page_name">'.$id.') '.$name.'</span><span class="page_message">'.$message.'</span></li>';  
}
echo '</ul>';

$mysqli->close();
}

不知道如何把它放到 Postgresql 中

非常感谢

【问题讨论】:

    标签: php mysql postgresql


    【解决方案1】:

    MySQL 和 Postgres 都使用 SQL 方言,因此您的许多 MySQL 查询都可以工作,尽管 Postgres 比 MySQL 更严格和一致。但是,没有自动的方法来进行这种转换。事实上,查看您的代码,这些查询似乎也应该在 Postgres 中工作。从长远来看,您可能需要考虑使用 ORM 来简化此类迁移。

    我建议在进行更改之前对所有查询工作实施单元测试。这样,当您切换到 Postgres 时,您可以确保正确的结果。

    【讨论】:

      猜你喜欢
      • 2021-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 2021-10-30
      相关资源
      最近更新 更多