mysql_connect를 mysqli_connect로 바꾸려면?
본문
이러닝 솔루션에서 mysql_connect, mysql_query, mysql_num_rows, mysql_fetch_array등 mysql함수를 사용하고 있습니다.
그런데 이 함수들을 mysqli에 관련된 것으로 바꾸고자 합니다.
문제는 mysql_connect, mysql_query, mysql_num_rows, mysql_fetch_array 함수를 사용하는 곳이 상당히 많다는 것입니다.
mysql_connect, mysql_query, mysql_num_rows, mysql_fetch_array 를 mysqlI 함수로 바꿀수 있는 방법이 어떤것이 있을까요?
mysql_connect, mysql_query, mysql_num_rows, mysql_fetch_array 함수를 찾아서 일일이 바꿔줘야 하나요?
아니면 새로운 파일을 만들어서 그 파일에는 mysqli 함수를 사용한후에, 지금부터 만드는 것은 새로 만든 파일을 include해서 사용해야 하나요?
조언 부탁드립니다.
답변 2
그누보드의 sql 함수들 살펴보세요.
lib/common.lib.php 파일
function sql_query($sql, $error=G5_DISPLAY_SQL_ERROR, $link=null)
{
global $g5, $g5_debug;
if(!$link)
$link = $g5['connect_db'];
// Blind SQL Injection 취약점 해결
$sql = trim($sql);
// union의 사용을 허락하지 않습니다.
//$sql = preg_replace("#^select.*from.*union.*#i", "select 1", $sql);
$sql = preg_replace("#^select.*from.*[\s\(]+union[\s\)]+.*#i ", "select 1", $sql);
// `information_schema` DB로의 접근을 허락하지 않습니다.
$sql = preg_replace("#^select.*from.*where.*`?information_schema`?.*#i", "select 1", $sql);
$is_debug = get_permission_debug_show();
$start_time = $is_debug ? get_microtime() : 0;
if(function_exists('mysqli_query') && G5_MYSQLI_USE) {
if ($error) {
$result = @mysqli_query($link, $sql) or die("<p>$sql<p>" . mysqli_errno($link) . " : " . mysqli_error($link) . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
} else {
$result = @mysqli_query($link, $sql);
}
} else {
if ($error) {
$result = @mysql_query($sql, $link) or die("<p>$sql<p>" . mysql_errno() . " : " . mysql_error() . "<p>error file : {$_SERVER['SCRIPT_NAME']}");
} else {
$result = @mysql_query($sql, $link);
}
}
그누보드에는 일반 mysql_query() 함수가 아니라 sql_query 함수로 재활용해서 만든게 있거든요 보안생각해서 만든거라서
딱히 mysqli_query 로 안해도 될것같아요 그리고 만약에 하게 되면 pdo로 하는게 좋죠~! 아니면 쿼리빌더 라이브러리를 가져다가 쓰면 좋을듯..