I am working on migrating our data from using inline SQL to using Stored Procedures. I am hitting a snag when running my code and getting the errors shown below:
Warning: sqlsrv_execute() expects parameter 1 to be resource, bool given in ajax_functions1.live.php on line 285
Warning: sqlsrv_fetch_array() expects parameter 1 to be resource, bool given in ajax_functions1.live.php on line 296
Below is an excerpt of the code:
function db_add_user($email, $provider, $subuid,$data){
include 'config.php';
$email = $data['preferred_username'];
$params = array(
array(&$myparams['email'], SQLSRV_PARAM_IN),
array(&$myparams['provider'], SQLSRV_PARAM_IN)
);
$sql = "{EXEC [dbo].[getSubUniqueID_HPCreate] @email = ?, @provider = ?}";
$stmt = sqlsrv_prepare($conn, $sql, $params);
sqlsrv_execute($stmt);
$uid=null;
if($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC) > 0) {
$uid = $row[0]['sub_unique_id'];
}else{
$params = array(
array(&$myparams['email'], SQLSRV_PARAM_IN),
array(&$myparams['provider'], SQLSRV_PARAM_IN),
array(&$myparams['subuid'], SQLSRV_PARAM_IN)
);
$sql = "{EXEC [dbo].[insertSubUniqueID_HPCreate] @email = ?, @provider = ?, @subuid = ?}";
$stmt = sqlsrv_prepare($conn, $sql, $params);
sqlsrv_execute($stmt);
}
return $uid;
}
Here is the SP dbo.getSubUniqueID_HPCreate
USE [homepages_config]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[getSubUniqueID_HPCreate]
@email nvarchar(256),
@provider nvarchar(64)
AS
BEGIN
SET NOCOUNT ON;
SELECT sub_unique_id FROM homepages_config.dbo.users_providers
WHERE email = @email AND provider_id = @provider;
END
Here is the SP dbo.insertSubUniqueID_HPCreate
USE [homepages_config]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[insertSubUniqueID_HPCreate]
@email nvarchar(256),
@provider nvarchar(256),
@subuid nvarchar(1024)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO homepages_config.dbo.users_providers ([email], [provider_id], [sub_unique_id])
VALUES (LOWER(@email), @provider, @subuid)
END
Any help would be greatly appreciated.