首页 > phper

用PHP调用数据库的存贮过程

大家知道,存储过程是在服务器端的一个脚本程序,执行起来速度很快,但它也有一个缺点,就是依靠与一个固定数据库,移植性不好!
我的上回文章,提到了用com组件是可以访问ado以及相关的组件,无论是自己建的还是系统带的,都可以扩展系统的功能,但现在php不支持dcom/com ,但相信它的下一个版本应该是支持的。
不说这么多了,我们马上试一下吧。

下面是我的一个简单的存贮过程
CREATE PROCEDURE [sp_mystoreprocedure] AS
select companyname, contactname, city from customers

其实,还可以写比较复杂的,可惜我对此研究不深,只好取简单了!

下面是我的php文件
<?
define ("OLEDB_CONNECTION_STRING",
"Provider=SQLOLEDB; Data Source=zzb; Initial Catalog=Northwind; User ID=sa; Password=");
$dbc = new COM("ADODB.Connection");
$dbc->Open(OLEDB_CONNECTION_STRING);
$command = "sp_mystoreprocedure";
$rs = $dbc->Execute($command); // Recordset
$i = 0;

echo '<table cellSpacing="1" cellPadding="3" width="600" align="center" bgColor="#000000" border="0">
<tr vAlign="bottom" bgColor="#9999cc">
<th>Directive</th>
<th>Local Value</th>
<th>Master Value</th>
</tr>';

while (!$rs->EOF) {
$i = 1;
$fld0 = $rs->Fields(0);
$fld1 = $rs->Fields(1);
$fld2 = $rs->Fields(2);
print '<tr vAlign="baseline" bgColor="#cccccc">
<td bgColor="#ccccff"><b>';
print $fld0->value;
print '</b><br></td>
<td align="middle">';
print $fld1->value;
print '</td><td align="middle">';
print $fld2->value;
print '</td></tr>';

$rs->MoveNext();
}
print '</TABLE>';

$rs->Close();
?>

注重的是,你的服务器必须打开!另外,就是不能写错存贮过程的名称。否则会出项致命的错误,而且,你根本就不知道错误在那里,这就是php文件对错误处理的不好之处,但相信它以后是会改进的。

我学php需然有很长时间了,但发现要真正用好它,不那么轻易,但它确实也超出了我的想象,有些东西真的很奇妙,真是,不用不知道,一用真奇妙!

阅读全文

Warning: mssql_query() [function.mssql-query]:

Warning: mssql_query() [function.mssql-query]: message: 不能用 DB-Library(如 ISQL)或 ODBC 3.7 或更早版本将 ntext 数据或仅使用 Unicode 排序规则的 Unicode 数据发送到客户端。 (severity 16) in F:myweblzljcn.php on line 21

Warning: mssql_query() [function.mssql-query]: Query failed in F:myweblzljcn.php on line 21

阅读全文

PHP 与 数据库 ODBC

PHP的数据库的ODBC

的ODBC是一种应用编程接口( API ) ,允许您连接到一个数据源(如MS Access资料库) 。


-------------------------------------------------- ------------------------------

创建一个ODBC连接
由于ODBC连接,可以连接到任何数据库,在任何电脑上,在您的网络,只要一个ODBC连接可用。

以下是如何创建ODBC连接到MS Access资料库:

打开管理工具图标在您的控制面板。
双击数据源( ODBC )图标内。
选择系统DSN标签。
点击添加系统DSN标签。
选择的Microsoft Access驱动程序。单击完成。
在接下来的画面中,按一下选择找到数据库。
给数据库的数据源名称( DSN ) 。
单击确定。
请注意,此配置需要做的计算机上您的网站上的位置。如果您正在运行Internet信息服务器( IIS )在您自己的电脑,上面的指示,将工作,但如果您的网站位于远程服务器上,你必须要有实际接触到该服务器,或要求您的网页主机,以向建立一个DSN的供您使用。


-------------------------------------------------- ------------------------------

连接到一个ODBC
该odbc_connect ( )函数是用来连接到ODBC数据源。该函数四个参数:数据源名称,用户名,密码和一个可选的游标类型。

该odbc_exec ( )函数是用来执行SQL语句。

例如
下面的例子创建了一个连接的DSN所谓北风,没有用户名和密码没有。然后它创建了一个数据库并执行它:

阅读全文

php 批量删除数据

数据用逗号隔开。
表单:
<form action="" method="post">
<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="1"/>
<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="2"/>
<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="3"/>
<input name="ID_Dele[]" type="checkbox" id="ID_Dele[]" value="4"/>
<input type="submit"/>
</form>
好$ID_Dele=$_POST['ID_Dele']将会是一个数组,虽然说PHP是弱类型的,但这里可没ASP弱。
ASP可以直接:
SQL="delete from [doing] where id in ('"&ID_Dele&"')"进行删除。但PHP不能把$ID_Dele直接放进去。因为$ID_Dele可不是'1,2,3,4'哦,因为$ID_Dele是一个数组,具有键和值。
好,PHP中也不难,刚好有个函数:implode(),对了。同split()explode()功能刚好相反的一个函数,后两者是用某字符(比如逗号)分割的,而前者则可以拼接为字符串。
因此:
$ID_Dele= implode(",",$_POST['ID_Dele']);
$SQL="delete from `doing` where id in ($ID_Dele)";

阅读全文