PHP多任务一个文件

时间:2017-03-15 12:31:51

标签: php

我正在学习php游戏 - 我需要在一个.php文件中完成两个任务。我需要的是
1)连接到服务器
2)执行存储过程(在语句中运行插入)
3)当存储过程完全执行对表的运行select语句时
4)回应结果

这是我的语法 - >我收到表tablecreatedfromproc不存在的错误。在存储过程完全执行之前,Select语句是否触发?如果我手动运行存储过程,它会按原样执行(这意味着它是有效的语法) - 但是当我尝试从我的php文件运行它时,我得到了错误。

如何更新此语法以便按需要执行?

//connection string
$hostname = 'hostname';
$dbname = 'dbname';
$username = 'username';
$password = 'password';
$dbh = new PDO("dblib:host=$hostname;dbname=$dbname","$username","$password");

//Parsing the passed in data
$passedparams = implode(',',$_REQUEST['passedparams']);

//Capturing the dates from passed in data
$d1 = $_REQUEST['d1'];
$d2 = $_REQUEST['d2'];

//Run Stored Procedure To Create Table
$proc = mssql_init('HoldingPattern',$conn);
mssql_bind($proc,'@d1',$d1,SQLVARCHAR);
mssql_bind($proc,'@d2',$d2,SQLVARCHAR);

//Create Query String to query newly created table
$sql = "SELECT ".$passedparams." FROM tablecreatedfromproc";
$stmt = $dbh->prepare($sql);
$stmt->execute();

1 个答案:

答案 0 :(得分:2)

您正在使用PDO进行连接,同时您正尝试执行另一个函数mssql_* - 在php7中删除 -

将PDO用于execute your procedures

$stmt = $dbh->prepare("HoldingPattern");
$stmt->bindParam(/* your required parameters goes here */);
$stmt->execute();

如上所述here

  

如果需要从MSSQL存储过程中获取Output变量,请尝试以下操作:

-- PROCEDURE
CREATE PROCEDURE spReturn_Int @err int OUTPUT
AS
SET @err = 11
GO

$sth = $dbh->prepare("EXECUTE spReturn_Int ?");
$sth->bindParam(1, $return_value, PDO::PARAM_INT|PDO::PARAM_INPUT_OUTPUT);
$sth->execute();
print "procedure returned $return_value\n";