2016-04-05 18 views
0

我需要在PHP中下面的MySQL句子翻譯到PostgreSQLPHP: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

謝謝你這麼多

回答

0

MySQL和Postgres都使用SQL方言,所以你的許多MySQL查詢都可以工作,儘管Postgres比MySQL更嚴格一致。然而,沒有自動的方式來做這種轉換。實際上,通過查看代碼看起來這些查詢也應該在Postgres中運行。長期來看,您可能需要考慮使用ORM來簡化這些遷移過程。

我建議在進行更改之前爲所有查詢工作實施單元測試。這樣你可以在切換到Postgres時確保正確的結果。