Восстановление данных хранимой процедуры с использованием ODBC и переполнения стека

Я пытаюсь получить значения параметра out, используя ODBC и PHP. Я искал в Интернете, но безрезультатно. Существует много разрешений для PDO и mysqli, и я нашел только этот для odbc. Я как бы сбился с толку по параметру, и операция включает в себя.

Я могу установить соединение с базой данных, но всегда выскакивает ошибка. Я не мог понять их.

[Sybase] [ODBC Driver] Неверная длина строки или буфера

Любое предложение?

<?php

$conn=odbc_connect("dsn", " ", " ");

if (!$conn)
{
exit("Connection Failed: " . $conn);
}

$sql=odbc_prepare("CALL ndTblUser (@varUserId,@varUserPwd)");
$stmt=odbc_execute($sql, "SELECT @varUserId as UserId, @varUserPwd as UserPwd");

$rs=odbc_exec($conn,$stmt);

if (!$rs)
{
exit("Error : " . odbc_errormsg());
}
echo "<table><tr>";
echo "<th>Id</th>";
echo "<th>Password</th></tr>";

while (odbc_fetch_row($rs))
{
$UserId=odbc_result_all($rs,"UserId");
$UserPwd=odbc_result_all($rs,"UserPwd");
echo "<tr><td>$UserId</td>";
echo "<td>$UserPwd</td></tr>";
}

odbc_close($conn);
?>

7

Решение

Теперь я просто угадаю, но если $UserId а также $UserPwd в реальном запросе должны быть столбцы, попробуйте удалить из них знак $. Позже в коде вы пытаетесь получить их как имена столбцов без знака $, поэтому я не уверен, что именно это и стало причиной ошибки. Они не являются переменными PHP, пока $UserId=odbc_result($rs,"UserId");,

1

Другие решения

Я наконец нашел решение.

У меня много неправильных представлений о хранимой процедуре, когда я получаю данные для этого вопроса. Даже самый простой.

Вместо извлечения данных вызываемых параметров вызываемый параметр используется для вызова других параметров результата. Например, здесь UserId а также UserPwd вызывается для отображения UserName а также LoginStatus,

Это правильный код для получения данных параметра результата UserName а также LoginStatus и на основе переменного параметра UserId а также UserPwd,

<?php

$conn=odbc_connect("dsn", " ", " ");

if (!$conn)
{
exit("Connection Failed : " . $conn);
}

$stmt=odbc_exec($conn,"CALL ndTblUser (".$_POST['UserId'].",'".$_POST['UserPwd']."')");

if (!$stmt)
{
"Error : " . odbc_errormsg();
}

if (odbc_fetch_row($stmt))
{
$UserName=odbc_result($stmt,"UserName");
$LoginStatus=odbc_result($stmt,"LoginStatus");
}if($LoginStatus==1)
{
echo odbc_result($stmt,"UserName");
echo odbc_result($stmt,"LoginStatus");
}
1

По вопросам рекламы [email protected]