在 Linux 上使用来自 PHP 运行 的 ODBC 调用存储过程 - odbc_prepare 不工作
Call stored procedure using ODBC from PHP running on Linux - odbc_prepare not working
我需要调用 SQL 服务器中的存储过程。
我在 Linux.
上通过 PHP 使用 ODBC
我可以连接,但不能调用过程,我的语法不太正确。
如果我要调用的数据库的开发人员 运行 自己(在 Windows 上),他会把它写成
执行 DW_Insert_MemberFromWeb 158
(158是我需要传的参数)
$conn = new PDO("odbc:MSSQLServer", $username, $password); // this works fine
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb(?)"); // THIS DOES NOT
if(!$stmt) {echo "could not prepare statement.";}
$success = odbc_execute($stmt, 158);
odbc_close($conn);
我已经尝试过这些不同的方式(当然一次一个):
$stmt = odbc_prepare($conn, 'call DW_Insert_MemberFromWeb(?)');
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb(?)");
$stmt = odbc_prepare($conn, "call dbo.DW_Insert_MemberFromWeb(?)");
$stmt = odbc_prepare($conn, "call exec DW_Insert_MemberFromWeb(?)");
感谢您的建议。我现在已经尝试了所有这些,但无济于事:
$stmt = odbc_prepare($conn, "exec DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "call exec DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "{call DW_Insert_MemberFromWeb ?}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb ?}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb (?)}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb 158}");
$stmt = odbc_prepare($conn, "SELECT * FROM MyTableName");
我正在使用 PDO ODBC 进行连接,所以我想我需要这样写??这些行在执行行之前不会失败。
$conn = new PDO("odbc:MSSQLServer", $username, $password);
//$stmt = $conn->prepare("exec DW_Insert_MemberFromWeb ?");
$stmt = $conn->prepare("exec DW_Insert_MemberFromWeb (?)");
//$stmt->bind_param("158");
$stmt->bind_param(158);
$stmt->execute();
$conn = new PDO("odbc:MSSQLServer", $username, $password);
if ($conn) {
echo "connected. ";
} else {
echo "not connected. ";
}
我终于找到了可以工作的代码,它是用于 PDO_ODBC,使用 PHP 7. 我永远无法绑定参数,所以我只是将整个 SQL 代码构建为一个变量。
$conn = new PDO("odbc:MSSQLServer", $username, $password);
$TheMSSQL = "exec DW_Insert_MemberFromWeb " . $myvar;
$stmt = $conn->prepare($TheMSSQL);
$stmt->execute();
if ($stmt) {
$result = $stmt->fetchAll();
foreach($result as $rst)
{
$MemberNum = $rst[MyFieldName];
//do some other stuff
}
}
我需要调用 SQL 服务器中的存储过程。 我在 Linux.
上通过 PHP 使用 ODBC我可以连接,但不能调用过程,我的语法不太正确。
如果我要调用的数据库的开发人员 运行 自己(在 Windows 上),他会把它写成 执行 DW_Insert_MemberFromWeb 158 (158是我需要传的参数)
$conn = new PDO("odbc:MSSQLServer", $username, $password); // this works fine
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb(?)"); // THIS DOES NOT
if(!$stmt) {echo "could not prepare statement.";}
$success = odbc_execute($stmt, 158);
odbc_close($conn);
我已经尝试过这些不同的方式(当然一次一个):
$stmt = odbc_prepare($conn, 'call DW_Insert_MemberFromWeb(?)');
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb(?)");
$stmt = odbc_prepare($conn, "call dbo.DW_Insert_MemberFromWeb(?)");
$stmt = odbc_prepare($conn, "call exec DW_Insert_MemberFromWeb(?)");
感谢您的建议。我现在已经尝试了所有这些,但无济于事:
$stmt = odbc_prepare($conn, "exec DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "call DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "call exec DW_Insert_MemberFromWeb ?");
$stmt = odbc_prepare($conn, "{call DW_Insert_MemberFromWeb ?}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb ?}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb (?)}");
$stmt = odbc_prepare($conn, "{exec DW_Insert_MemberFromWeb 158}");
$stmt = odbc_prepare($conn, "SELECT * FROM MyTableName");
我正在使用 PDO ODBC 进行连接,所以我想我需要这样写??这些行在执行行之前不会失败。
$conn = new PDO("odbc:MSSQLServer", $username, $password);
//$stmt = $conn->prepare("exec DW_Insert_MemberFromWeb ?");
$stmt = $conn->prepare("exec DW_Insert_MemberFromWeb (?)");
//$stmt->bind_param("158");
$stmt->bind_param(158);
$stmt->execute();
$conn = new PDO("odbc:MSSQLServer", $username, $password);
if ($conn) {
echo "connected. ";
} else {
echo "not connected. ";
}
我终于找到了可以工作的代码,它是用于 PDO_ODBC,使用 PHP 7. 我永远无法绑定参数,所以我只是将整个 SQL 代码构建为一个变量。
$conn = new PDO("odbc:MSSQLServer", $username, $password);
$TheMSSQL = "exec DW_Insert_MemberFromWeb " . $myvar;
$stmt = $conn->prepare($TheMSSQL);
$stmt->execute();
if ($stmt) {
$result = $stmt->fetchAll();
foreach($result as $rst)
{
$MemberNum = $rst[MyFieldName];
//do some other stuff
}
}