【问题标题】:PHP / MSSql How to preview a stored procedurePHP / MSSql 如何预览存储过程
【发布时间】:2012-03-19 22:42:15
【问题描述】:

我们正在使用 PHP 对 MSSQL 数据库执行存储过程。

当我们手动构建存储过程并使用 Navicat 手动执行它时,我们会得到正确的结果。

当我们构建查询并使用 PHP 执行它时,我们会得到不同的结果。

有什么方法可以让我们预览 php 针对服务器创建和执行的存储过程?

这不是确切的代码,但本质上就是我们正在做的事情。

$stmt = mssql_init("sp_doSomething");
mssql_bind($stmt, "@sid", $sid, SQLINT4, false);
mssql_bind($stmt, "@value", $value, SQLINT4, false);
$result = mssql_execute($stmt);

我希望能够预览 $stmt 中包含的实际 SQL 语句。

任何帮助将不胜感激。

【问题讨论】:

  • 没有“预览”存储过程的通用方法,因为它们几乎可以做任何事情:您将如何预览发送电子邮件的过程? SQL Profiler 是正确的工具,但是您在下面说您不能使用它。您有可以使用 Profiler 的测试环境吗?您还应该解释“不同的结果”是什么意思,以及您拥有的 SQL Server 版本和版本。

标签: php sql-server stored-procedures


【解决方案1】:

SQL Query Profiler 是一个很好的工具,可以实时挂钩和观察 SQL 服务器现在正在做什么。那会很有用。

【讨论】:

  • 所以更复杂的是,我们没有那个级别的访问 MSSql 服务器。我们所能做的就是反对它。有没有其他方法可以看到我们这边的电话?
  • 不能在 php.ini 中逐行运行 mssql 中的存储过程。如果您没有访问MSSQL的权限,您怎么知道sp内容与您的手写查询相同?我会观察服务器产生的值并尝试自己获取相同的值。并尝试使用不同的输入,然后如果我的函数产生完全相同的结果,那么我会说它们是相同的。
  • 到目前为止,试错对我们不起作用。那么我的理解是否正确,在我执行之前无法查看 PHP 正在创建的调用?没办法看到mssql_execute()要执行什么?
  • 为什么您认为您没有正确的访问权限来使用 sql profiler 进行分析?如果您可以使用 PHP 连接并使用 PHP 发送查询,我认为您也可以分析服务器吗?如果您无权查看正在执行的内容,那么您就没有机会让 PHP 执行此操作。
  • 因为我在 PHP 中构建和执行查询,所以我似乎能够看到我正在执行的内容。查询确实在我这边构建并发送到服务器。 SQL Profiler 现在对我来说不是一个选择,我希望有另一种方法。
【解决方案2】:

如果您是 windows 用户,您可以下载 2 个文件 1.php_pdo_sqlsrv_56_ts.dll 2.php_sqlsrv_56_ts.dll 并在更改 php.ini 文件后获取 php 文件夹添加此行 extension=php_pdo_sqlsrv_56_ts.dll 和 extension=php_pdo_sqlsrv_56_ts.dll 并重启 apache

$connection = mssql_connect('hostname', 'username', 'password');
if (!$connection) {
  die('Unable to connect!');
}
if (!mssql_select_db('db-name', $connection)) {
  die('Unable to select database!');
}
$vall='zanala';
$stmt = mssql_init("SYSTEM_USERS_FIND_BY_USERNAME",$connection);
mssql_bind($stmt, "@IN_USERNAME",$vall,  SQLVARCHAR,  false,  false,  -1);
 $result=mssql_execute($stmt);
$row = mssql_fetch_assoc($result);
echo $my_id = $row['IID'];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-26
    相关资源
    最近更新 更多