EmpireCMS用SQL拡張プログラムの作成方法について – EmpireCMSデータベースSQL文の形式
基本例:
注記:以下の例では、PHPファイルをシステムのルートディレクトリに配置することを基準としています。
例1:MySQLプログラムの接続(a.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
require('e/class/db_sql.php'); //引入数据库操作文件
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
db_close(); //关闭MYSQL链接
$empire=null; //注消操作类变量
?>例2:MySQLデータを操作するプログラム(b.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
require('e/class/db_sql.php'); //引入数据库操作文件
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
$empire->query("update {$dbtbpre}ecms_news set onclick=onclick+1"); //给新闻表的点击数加1
db_close(); //关闭MYSQL链接
$empire=null; //注消操作类变量
?>例3:MySQLデータを読み取るプログラム(c.php)
<?php
require('e/class/connect.php'); //引入数据库配置文件和公共函数文件
require('e/class/db_sql.php'); //引入数据库操作文件
$link=db_connect(); //连接MYSQL
$empire=new mysqlquery(); //声明数据库操作类
$sql=$empire->query("select * from {$dbtbpre}ecms_news order by newstime limit 10"); //查询新闻表最新10条记录
while($r=$empire->fetch($sql)) //循环获取查询记录
{
echo"标题:".$r['title']."<br>";
}
db_close(); //关闭MYSQL链接
$empire=null; //注消操作类变量
?>/e/class/db_sql.php ファイルにおけるデータベース操作クラスでよく用いられる関数の説明:
1. SQL関数の実行:
$empire->query("SQL语句");
$empire->query1("SQL语句");お問い合わせ内容:
実行に成功した場合に `true` を返し、実行に失敗した場合に `false` を返す。
両者の違いは以下の通りです:`query()` でエラーが発生した場合、プログラムの実行が直接中断されます。一方、`query1()` でエラーが発生した場合、プログラムの実行は中断されません。
使用例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");2. データベースレコードの循環的読み取り関数:
$empire->fetch($sql)お問い合わせ内容:
`$SQL` は、クエリ実行後にSQLから返された結果です。
使用例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
while($r=$empire->fetch($sql))
{
echo"标题:".$r['title']."<br>";
}3. 単一データベースレコードの読み取り関数:(非ループ処理)
$empire->fetch1("SQL语句")使用例:
$r=$empire->fetch1("select * from {$dbtbpre}ecms_news where id=1");
echo"标题:".$r['title'];4. SQLクエリの実行回数を統計する関数:
$empire->num("SQL语句")
$empire->num1($sql)お問い合わせ内容:
両者の違いは、`num()`では直接SQL文を記述するのに対し、`num1()`では `$sql`がクエリ実行後に返された結果である点にあります。
使用例:
$num=$empire->num("select id from {$dbtbpre}ecms_news");
echo"新闻表共有 ".$num." 条新闻";5. SQLクエリの実行回数を統計する関数2:(`num`よりも効率的な関数)
$empire->gettotal("统计SQL语句");お問い合わせ内容:
`gettotal()` と `num()` の違いは、`gettotal()` が SQL 自体の `COUNT(*)` 関数を用いて集計を行うのに対し、`num()` は PHP 自体の関数を用いている点にあります。したがって、`gettotal()` はより効率的です。
`gettotal()` 内の集計式は必ず `as total` で指定する必要があります。例:`count(*) as total`。
使用例:
$num=$empire->gettotal("select count(*) as total from {$dbtbpre}ecms_news");
echo"新闻表共有 ".$num." 条新闻";6. 新しく挿入されたテーブルの自増ID値を取得する関数:
$empire->lastid()使用例:
$empire->query("insert into {$dbtbpre}ecms_news(title) values('标题')");
$lastid=$empire->lastid();
echo"刚插入的信息ID为:".$lastid;7. 携帯型SQLクエリ結果レコードポインタ:
$empire->seek($sql,$pit)お問い合わせ内容:
`$SQL` はクエリ実行後にSQLから返された結果であり、`$pit` はポインタのオフセット値です。
使用例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
$empire->seek($sql,2);8. SQLクエリ結果を解放する関数:(通常は使用する必要はありません)
$empire->free($sql)お問い合わせ内容:
`$SQL` は、クエリ実行後にSQLから返された結果です。
使用例:
$sql=$empire->query("select * from {$dbtbpre}ecms_news");
$empire->free($sql);