我正在学习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();
答案 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";