Index: trunk/install/php/foltialib.php
===================================================================
--- trunk/install/php/foltialib.php (リビジョン 89)
+++ trunk/install/php/foltialib.php (リビジョン 94)
@@ -93,14 +93,5 @@
}
}
-
- /* LIKE 用の文字列のエスケープ */
- function escape_like($sql, $quote = TRUE) {
- return ($quote ? "'" : "") .
- str_replace(array("\\\\", "%" , "_" ),
- array("\\\\\\\\", "\\\\%", "\\\\_"),
- pg_escape_string($sql)) .
- ($quote ? "'" : "");
- }
-
+
/* SQL 文字列のエスケープ */
function escape_string($sql, $quote = FALSE) {
@@ -108,8 +99,18 @@
return "null";
}
+ if (preg_match("/^pgsql/", DSN)){
return ($quote ? "'" : "") .
pg_escape_string($sql) .
($quote ? "'" : "");
- }
+ }else if (preg_match("/^sqlite/", DSN)){
+ /* return ($quote ? "'" : "") .
+ sqlite_escape_string($sql) .
+ ($quote ? "'" : "");
+ */
+ return($sql);
+ }else{
+ return "null";
+ }
+ }
/* SQL 数値のエスケープ */
@@ -124,41 +125,55 @@
}
- /* PostgreSQL サーバに接続 */
+ /* DBに接続 */
function m_connect() {
-/* $con = @pg_connect("host=".DBHOST ." dbname=".DATABASE_NAME .
- " user=".USER_NAME .
- " password=".USER_PASSWORD);
-*/
- $con = @pg_pconnect("host=".DBHOST ." dbname=".DATABASE_NAME .
- " user=".USER_NAME .
- " password=".USER_PASSWORD);
-
-
- if (!$con) {
- die_exit("データベースに接続出来ませんでした。");
+ try {
+ $dbh = new PDO(DSN);
+ $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
+ return($dbh);
+ } catch (PDOException $e) {
+ die_exit($e->getMessage() . ": データベースに接続出来ませんでした。");
}
/* データベースと、PHP の内部文字コードが違う場合 */
- return($con);
}
/* データベースとの接続を切り離す */
- function m_close($con) {
- return @pg_close($con);
- }
-
- /* SQL 文を実行 */
- function m_query($con, $query, $errmessage) {
- $rtn = @pg_query($con, $query);
- if (!$rtn) {
+function m_close($dbh) {
+ return null;
+ }
+
+//旧関数 sql_queryに置き換え
+function m_query($dbh, $query, $errmessage) {
+ try {
+ $rtn = $dbh->query($query);
+ return($rtn);
+ } catch (PDOException $e) {
/* エラーメッセージに SQL 文を出すのはセキュリティ上良くない!! */
$msg = $errmessage . "
\n" .
- @pg_last_error($con) . "
\n" .
+ $e->getMessage() . "
\n" .
+ var_export($e->errorInfo, true) . "
\n" .
"" . htmlspecialchars($query) .
"
\n";
- $rtn = @pg_query($con, "rollback");//04.4.8
- m_close($con);
+// $dbh->rollBack();
+ $dbh = null;
die_exit($msg);
}
+ }
+/* SQL 文を実行 */
+function sql_query($dbh, $query, $errmessage,$paramarray) {
+ try {
+ $rtn = $dbh->prepare("$query");
+ $rtn->execute($paramarray);
return($rtn);
+ } catch (PDOException $e) {
+ /* エラーメッセージに SQL 文を出すのはセキュリティ上良くない!! */
+ $msg = $errmessage . "
\n" .
+ $e->getMessage() . "
\n" .
+ var_export($e->errorInfo, true) . "
\n" .
+ "" . htmlspecialchars($query) .
+ "
\n";
+// $dbh->rollBack();
+ $dbh = null;
+ die_exit($msg);
+ }
}
@@ -166,7 +181,8 @@
function m_showtable($rs) {
/* 検索件数 */
- $maxrows = pg_num_rows($rs);
+ $maxrows = 0;
- if ($maxrows == 0) {
+ $rowdata = $rs->fetch();
+ if (! $rowdata) {
echo("
データが存在しません
\n"); return 0; @@ -174,5 +190,5 @@ /* フィールド数 */ - $maxcols = pg_num_fields($rs); + $maxcols = $rs->columnCount(); ?>$f_name | \n"); } @@ -192,8 +209,8 @@ \n"); - /* pg_fetch_row で一行取り出す */ - $rowdata = pg_fetch_row($rs, $row); /* 1列目にリンクを張る */ echo("\n");
- }
+ } while ($rowdata = $rs->fetch());
?>
@@ -212,8 +229,10 @@
}
- /* 指定したコードのデータを表示 */
- function m_viewdata($con, $code) {
- /* コードに該当するデータを検索 */
- $query = "
+
+function m_viewdata($dbh, $code) {
+
+/*これ使ってないよね?
+
+ $query = "
select p.code
,p.name
@@ -222,27 +241,28 @@
,s.name as job
,p.profile
- ,to_char(p.editdate, 'YYYY/MM/DD HH24:MI:SS') as editdate
+ ,datetime(p.editdate) as editdate
from inet_profile p left join inet_job s on p.job = s.code
where p.code = $code";
- $rs = m_query($con, $query, "個人情報の取得に失敗しました。");
- if (pg_num_rows($rs) == 0) {
+ $rs = m_query($dbh, $query, "個人情報の取得に失敗しました。");
+ $rowdata = $rs->fetch();
+ if (! $rowdata) {
echo(" データが存在しません \n"); return FALSE; } - /* フィールド数 */ - $maxcols = pg_num_fields($rs); - /* 先頭行 */ - $rowdata = pg_fetch_row($rs, 0); + // フィールド数 + $maxcols = $rs->columnCount(); ?>
"); }else{ @@ -301,8 +321,5 @@ //print "
|
---|